From cc481fecb4a87b77bfcaabb903fb083b5593fce5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Wed, 17 Feb 2016 14:46:16 +0100 Subject: [PATCH] Remove embedded libraries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - phpseclib - sql-parser - tcpdf These are now loaded by composer. Signed-off-by: Michal Čihař --- libraries/phpseclib/Crypt/AES.php | 131 - libraries/phpseclib/Crypt/Base.php | 2549 -- libraries/phpseclib/Crypt/Random.php | 243 - libraries/phpseclib/Crypt/Rijndael.php | 941 - libraries/phpseclib/LICENSE | 21 - libraries/sql-parser/ClassLoader.php | 250 - libraries/sql-parser/autoload.php | 77 - libraries/sql-parser/src/Component.php | 82 - .../src/Components/AlterOperation.php | 225 - .../sql-parser/src/Components/Array2d.php | 134 - .../sql-parser/src/Components/ArrayObj.php | 194 - .../sql-parser/src/Components/Condition.php | 223 - .../src/Components/CreateDefinition.php | 317 - .../sql-parser/src/Components/DataType.php | 171 - .../sql-parser/src/Components/Expression.php | 435 - .../src/Components/ExpressionArray.php | 122 - .../src/Components/FunctionCall.php | 125 - .../sql-parser/src/Components/IntoKeyword.php | 148 - .../sql-parser/src/Components/JoinKeyword.php | 169 - libraries/sql-parser/src/Components/Key.php | 208 - libraries/sql-parser/src/Components/Limit.php | 136 - .../src/Components/OptionsArray.php | 345 - .../src/Components/OrderKeyword.php | 141 - .../src/Components/ParameterDefinition.php | 161 - .../src/Components/PartitionDefinition.php | 224 - .../sql-parser/src/Components/Reference.php | 158 - .../src/Components/RenameOperation.php | 174 - .../src/Components/SetOperation.php | 136 - .../src/Components/UnionKeyword.php | 40 - libraries/sql-parser/src/Context.php | 545 - .../src/Contexts/ContextMySql50000.php | 281 - .../src/Contexts/ContextMySql50100.php | 305 - .../src/Contexts/ContextMySql50500.php | 309 - .../src/Contexts/ContextMySql50600.php | 340 - .../src/Contexts/ContextMySql50700.php | 351 - .../src/Exceptions/LexerException.php | 51 - .../src/Exceptions/ParserException.php | 44 - libraries/sql-parser/src/Lexer.php | 876 - libraries/sql-parser/src/Parser.php | 560 - libraries/sql-parser/src/Statement.php | 400 - .../src/Statements/AlterStatement.php | 141 - .../src/Statements/AnalyzeStatement.php | 48 - .../src/Statements/BackupStatement.php | 39 - .../src/Statements/CallStatement.php | 38 - .../src/Statements/CheckStatement.php | 41 - .../src/Statements/ChecksumStatement.php | 37 - .../src/Statements/CreateStatement.php | 563 - .../src/Statements/DeleteStatement.php | 99 - .../src/Statements/DropStatement.php | 70 - .../src/Statements/ExplainStatement.php | 23 - .../src/Statements/InsertStatement.php | 93 - .../src/Statements/MaintenanceStatement.php | 68 - .../Statements/NotImplementedStatement.php | 68 - .../src/Statements/OptimizeStatement.php | 48 - .../src/Statements/RenameStatement.php | 57 - .../src/Statements/RepairStatement.php | 43 - .../src/Statements/ReplaceStatement.php | 84 - .../src/Statements/RestoreStatement.php | 36 - .../src/Statements/SelectStatement.php | 219 - .../src/Statements/SetStatement.php | 43 - .../src/Statements/ShowStatement.php | 71 - .../src/Statements/TransactionStatement.php | 120 - .../src/Statements/TruncateStatement.php | 41 - .../src/Statements/UpdateStatement.php | 105 - libraries/sql-parser/src/Token.php | 292 - libraries/sql-parser/src/TokensList.php | 208 - libraries/sql-parser/src/UtfString.php | 218 - .../sql-parser/src/Utils/BufferedQuery.php | 417 - libraries/sql-parser/src/Utils/Error.php | 100 - libraries/sql-parser/src/Utils/Formatter.php | 532 - libraries/sql-parser/src/Utils/Misc.php | 114 - libraries/sql-parser/src/Utils/Query.php | 787 - libraries/sql-parser/src/Utils/Routine.php | 136 - libraries/sql-parser/src/Utils/Table.php | 142 - libraries/sql-parser/src/Utils/Tokens.php | 175 - libraries/sql-parser/src/common.php | 21 - libraries/tcpdf/LICENSE.TXT | 858 - libraries/tcpdf/README.TXT | 115 - libraries/tcpdf/config/tcpdf_config.php | 227 - .../tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE | 99 - libraries/tcpdf/fonts/dejavusans.ctg.z | Bin 10454 -> 0 bytes libraries/tcpdf/fonts/dejavusans.php | 16 - libraries/tcpdf/fonts/dejavusans.z | Bin 375806 -> 0 bytes libraries/tcpdf/fonts/dejavusansb.ctg.z | Bin 10200 -> 0 bytes libraries/tcpdf/fonts/dejavusansb.php | 16 - libraries/tcpdf/fonts/dejavusansb.z | Bin 347269 -> 0 bytes libraries/tcpdf/fonts/helvetica.php | 13 - libraries/tcpdf/include/sRGB.icc | Bin 6922 -> 0 bytes libraries/tcpdf/include/tcpdf_colors.php | 462 - libraries/tcpdf/include/tcpdf_font_data.php | 18447 ------------ libraries/tcpdf/include/tcpdf_fonts.php | 2591 -- libraries/tcpdf/include/tcpdf_images.php | 363 - libraries/tcpdf/include/tcpdf_static.php | 2528 -- libraries/tcpdf/tcpdf.php | 24480 ---------------- libraries/tcpdf/tcpdf_autoconfig.php | 241 - 95 files changed, 68135 deletions(-) delete mode 100644 libraries/phpseclib/Crypt/AES.php delete mode 100644 libraries/phpseclib/Crypt/Base.php delete mode 100644 libraries/phpseclib/Crypt/Random.php delete mode 100644 libraries/phpseclib/Crypt/Rijndael.php delete mode 100644 libraries/phpseclib/LICENSE delete mode 100644 libraries/sql-parser/ClassLoader.php delete mode 100644 libraries/sql-parser/autoload.php delete mode 100644 libraries/sql-parser/src/Component.php delete mode 100644 libraries/sql-parser/src/Components/AlterOperation.php delete mode 100644 libraries/sql-parser/src/Components/Array2d.php delete mode 100644 libraries/sql-parser/src/Components/ArrayObj.php delete mode 100644 libraries/sql-parser/src/Components/Condition.php delete mode 100644 libraries/sql-parser/src/Components/CreateDefinition.php delete mode 100644 libraries/sql-parser/src/Components/DataType.php delete mode 100644 libraries/sql-parser/src/Components/Expression.php delete mode 100644 libraries/sql-parser/src/Components/ExpressionArray.php delete mode 100644 libraries/sql-parser/src/Components/FunctionCall.php delete mode 100644 libraries/sql-parser/src/Components/IntoKeyword.php delete mode 100644 libraries/sql-parser/src/Components/JoinKeyword.php delete mode 100644 libraries/sql-parser/src/Components/Key.php delete mode 100644 libraries/sql-parser/src/Components/Limit.php delete mode 100644 libraries/sql-parser/src/Components/OptionsArray.php delete mode 100644 libraries/sql-parser/src/Components/OrderKeyword.php delete mode 100644 libraries/sql-parser/src/Components/ParameterDefinition.php delete mode 100644 libraries/sql-parser/src/Components/PartitionDefinition.php delete mode 100644 libraries/sql-parser/src/Components/Reference.php delete mode 100644 libraries/sql-parser/src/Components/RenameOperation.php delete mode 100644 libraries/sql-parser/src/Components/SetOperation.php delete mode 100644 libraries/sql-parser/src/Components/UnionKeyword.php delete mode 100644 libraries/sql-parser/src/Context.php delete mode 100644 libraries/sql-parser/src/Contexts/ContextMySql50000.php delete mode 100644 libraries/sql-parser/src/Contexts/ContextMySql50100.php delete mode 100644 libraries/sql-parser/src/Contexts/ContextMySql50500.php delete mode 100644 libraries/sql-parser/src/Contexts/ContextMySql50600.php delete mode 100644 libraries/sql-parser/src/Contexts/ContextMySql50700.php delete mode 100644 libraries/sql-parser/src/Exceptions/LexerException.php delete mode 100644 libraries/sql-parser/src/Exceptions/ParserException.php delete mode 100644 libraries/sql-parser/src/Lexer.php delete mode 100644 libraries/sql-parser/src/Parser.php delete mode 100644 libraries/sql-parser/src/Statement.php delete mode 100644 libraries/sql-parser/src/Statements/AlterStatement.php delete mode 100644 libraries/sql-parser/src/Statements/AnalyzeStatement.php delete mode 100644 libraries/sql-parser/src/Statements/BackupStatement.php delete mode 100644 libraries/sql-parser/src/Statements/CallStatement.php delete mode 100644 libraries/sql-parser/src/Statements/CheckStatement.php delete mode 100644 libraries/sql-parser/src/Statements/ChecksumStatement.php delete mode 100644 libraries/sql-parser/src/Statements/CreateStatement.php delete mode 100644 libraries/sql-parser/src/Statements/DeleteStatement.php delete mode 100644 libraries/sql-parser/src/Statements/DropStatement.php delete mode 100644 libraries/sql-parser/src/Statements/ExplainStatement.php delete mode 100644 libraries/sql-parser/src/Statements/InsertStatement.php delete mode 100644 libraries/sql-parser/src/Statements/MaintenanceStatement.php delete mode 100644 libraries/sql-parser/src/Statements/NotImplementedStatement.php delete mode 100644 libraries/sql-parser/src/Statements/OptimizeStatement.php delete mode 100644 libraries/sql-parser/src/Statements/RenameStatement.php delete mode 100644 libraries/sql-parser/src/Statements/RepairStatement.php delete mode 100644 libraries/sql-parser/src/Statements/ReplaceStatement.php delete mode 100644 libraries/sql-parser/src/Statements/RestoreStatement.php delete mode 100644 libraries/sql-parser/src/Statements/SelectStatement.php delete mode 100644 libraries/sql-parser/src/Statements/SetStatement.php delete mode 100644 libraries/sql-parser/src/Statements/ShowStatement.php delete mode 100644 libraries/sql-parser/src/Statements/TransactionStatement.php delete mode 100644 libraries/sql-parser/src/Statements/TruncateStatement.php delete mode 100644 libraries/sql-parser/src/Statements/UpdateStatement.php delete mode 100644 libraries/sql-parser/src/Token.php delete mode 100644 libraries/sql-parser/src/TokensList.php delete mode 100644 libraries/sql-parser/src/UtfString.php delete mode 100644 libraries/sql-parser/src/Utils/BufferedQuery.php delete mode 100644 libraries/sql-parser/src/Utils/Error.php delete mode 100644 libraries/sql-parser/src/Utils/Formatter.php delete mode 100644 libraries/sql-parser/src/Utils/Misc.php delete mode 100644 libraries/sql-parser/src/Utils/Query.php delete mode 100644 libraries/sql-parser/src/Utils/Routine.php delete mode 100644 libraries/sql-parser/src/Utils/Table.php delete mode 100644 libraries/sql-parser/src/Utils/Tokens.php delete mode 100644 libraries/sql-parser/src/common.php delete mode 100644 libraries/tcpdf/LICENSE.TXT delete mode 100644 libraries/tcpdf/README.TXT delete mode 100644 libraries/tcpdf/config/tcpdf_config.php delete mode 100644 libraries/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE delete mode 100644 libraries/tcpdf/fonts/dejavusans.ctg.z delete mode 100644 libraries/tcpdf/fonts/dejavusans.php delete mode 100644 libraries/tcpdf/fonts/dejavusans.z delete mode 100644 libraries/tcpdf/fonts/dejavusansb.ctg.z delete mode 100644 libraries/tcpdf/fonts/dejavusansb.php delete mode 100644 libraries/tcpdf/fonts/dejavusansb.z delete mode 100644 libraries/tcpdf/fonts/helvetica.php delete mode 100644 libraries/tcpdf/include/sRGB.icc delete mode 100644 libraries/tcpdf/include/tcpdf_colors.php delete mode 100644 libraries/tcpdf/include/tcpdf_font_data.php delete mode 100644 libraries/tcpdf/include/tcpdf_fonts.php delete mode 100644 libraries/tcpdf/include/tcpdf_images.php delete mode 100644 libraries/tcpdf/include/tcpdf_static.php delete mode 100644 libraries/tcpdf/tcpdf.php delete mode 100644 libraries/tcpdf/tcpdf_autoconfig.php diff --git a/libraries/phpseclib/Crypt/AES.php b/libraries/phpseclib/Crypt/AES.php deleted file mode 100644 index a0902907c7..0000000000 --- a/libraries/phpseclib/Crypt/AES.php +++ /dev/null @@ -1,131 +0,0 @@ - - * setKey('abcdefghijklmnop'); - * - * $size = 10 * 1024; - * $plaintext = ''; - * for ($i = 0; $i < $size; $i++) { - * $plaintext.= 'a'; - * } - * - * echo $aes->decrypt($aes->encrypt($plaintext)); - * ?> - * - * - * @category Crypt - * @package AES - * @author Jim Wigginton - * @copyright 2008 Jim Wigginton - * @license http://www.opensource.org/licenses/mit-license.html MIT License - * @link http://phpseclib.sourceforge.net - */ -namespace phpseclib\Crypt; - -if (! defined('PHPMYADMIN')) { - exit; -} - -use phpseclib\Crypt\Rijndael; - -/** - * Pure-PHP implementation of AES. - * - * @package AES - * @author Jim Wigginton - * @access public - */ -class AES extends Rijndael -{ - /** - * Dummy function - * - * Since \phpseclib\Crypt\AES extends \phpseclib\Crypt\Rijndael, this function is, technically, available, but it doesn't do anything. - * - * @see \phpseclib\Crypt\Rijndael::setBlockLength() - * @access public - * @param int $length - */ - function setBlockLength($length) - { - return; - } - - /** - * Sets the key length - * - * Valid key lengths are 128, 192, and 256. If the length is less than 128, it will be rounded up to - * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. - * - * @see \phpseclib\Crypt\Rijndael:setKeyLength() - * @access public - * @param int $length - */ - function setKeyLength($length) - { - switch ($length) { - case 160: - $length = 192; - break; - case 224: - $length = 256; - } - parent::setKeyLength($length); - } - - /** - * Sets the key. - * - * Rijndael supports five different key lengths, AES only supports three. - * - * @see \phpseclib\Crypt\Rijndael:setKey() - * @see setKeyLength() - * @access public - * @param string $key - */ - function setKey($key) - { - parent::setKey($key); - - if (!$this->explicit_key_length) { - $length = strlen($key); - switch (true) { - case $length <= 16: - $this->key_length = 16; - break; - case $length <= 24: - $this->key_length = 24; - break; - default: - $this->key_length = 32; - } - $this->_setEngine(); - } - } -} diff --git a/libraries/phpseclib/Crypt/Base.php b/libraries/phpseclib/Crypt/Base.php deleted file mode 100644 index e1d0b8b272..0000000000 --- a/libraries/phpseclib/Crypt/Base.php +++ /dev/null @@ -1,2549 +0,0 @@ - - * @author Hans-Juergen Petrich - * @copyright 2007 Jim Wigginton - * @license http://www.opensource.org/licenses/mit-license.html MIT License - * @link http://phpseclib.sourceforge.net - */ - -namespace phpseclib\Crypt; - -use phpseclib\Crypt\Hash; - -/** - * Base Class for all \phpseclib\Crypt\* cipher classes - * - * @package Base - * @author Jim Wigginton - * @author Hans-Juergen Petrich - */ -abstract class Base -{ - /**#@+ - * @access public - * @see \phpseclib\Crypt\Base::encrypt() - * @see \phpseclib\Crypt\Base::decrypt() - */ - /** - * Encrypt / decrypt using the Counter mode. - * - * Set to -1 since that's what Crypt/Random.php uses to index the CTR mode. - * - * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Counter_.28CTR.29 - */ - const MODE_CTR = -1; - /** - * Encrypt / decrypt using the Electronic Code Book mode. - * - * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 - */ - const MODE_ECB = 1; - /** - * Encrypt / decrypt using the Code Book Chaining mode. - * - * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 - */ - const MODE_CBC = 2; - /** - * Encrypt / decrypt using the Cipher Feedback mode. - * - * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher_feedback_.28CFB.29 - */ - const MODE_CFB = 3; - /** - * Encrypt / decrypt using the Output Feedback mode. - * - * @link http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Output_feedback_.28OFB.29 - */ - const MODE_OFB = 4; - /** - * Encrypt / decrypt using streaming mode. - */ - const MODE_STREAM = 5; - /**#@-*/ - - /** - * Whirlpool available flag - * - * @see \phpseclib\Crypt\Base::_hashInlineCryptFunction() - * @var bool - * @access private - */ - static $WHIRLPOOL_AVAILABLE; - - /**#@+ - * @access private - * @see \phpseclib\Crypt\Base::__construct() - */ - /** - * Base value for the internal implementation $engine switch - */ - const ENGINE_INTERNAL = 1; - /** - * Base value for the mcrypt implementation $engine switch - */ - const ENGINE_MCRYPT = 2; - /** - * Base value for the mcrypt implementation $engine switch - */ - const ENGINE_OPENSSL = 3; - /**#@-*/ - - /** - * The Encryption Mode - * - * @see self::__construct() - * @var int - * @access private - */ - var $mode; - - /** - * The Block Length of the block cipher - * - * @var int - * @access private - */ - var $block_size = 16; - - /** - * The Key - * - * @see self::setKey() - * @var string - * @access private - */ - var $key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; - - /** - * The Initialization Vector - * - * @see self::setIV() - * @var string - * @access private - */ - var $iv; - - /** - * A "sliding" Initialization Vector - * - * @see self::enableContinuousBuffer() - * @see self::_clearBuffers() - * @var string - * @access private - */ - var $encryptIV; - - /** - * A "sliding" Initialization Vector - * - * @see self::enableContinuousBuffer() - * @see self::_clearBuffers() - * @var string - * @access private - */ - var $decryptIV; - - /** - * Continuous Buffer status - * - * @see self::enableContinuousBuffer() - * @var bool - * @access private - */ - var $continuousBuffer = false; - - /** - * Encryption buffer for CTR, OFB and CFB modes - * - * @see self::encrypt() - * @see self::_clearBuffers() - * @var array - * @access private - */ - var $enbuffer; - - /** - * Decryption buffer for CTR, OFB and CFB modes - * - * @see self::decrypt() - * @see self::_clearBuffers() - * @var array - * @access private - */ - var $debuffer; - - /** - * mcrypt resource for encryption - * - * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. - * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. - * - * @see self::encrypt() - * @var resource - * @access private - */ - var $enmcrypt; - - /** - * mcrypt resource for decryption - * - * The mcrypt resource can be recreated every time something needs to be created or it can be created just once. - * Since mcrypt operates in continuous mode, by default, it'll need to be recreated when in non-continuous mode. - * - * @see self::decrypt() - * @var resource - * @access private - */ - var $demcrypt; - - /** - * Does the enmcrypt resource need to be (re)initialized? - * - * @see \phpseclib\Crypt\Twofish::setKey() - * @see \phpseclib\Crypt\Twofish::setIV() - * @var bool - * @access private - */ - var $enchanged = true; - - /** - * Does the demcrypt resource need to be (re)initialized? - * - * @see \phpseclib\Crypt\Twofish::setKey() - * @see \phpseclib\Crypt\Twofish::setIV() - * @var bool - * @access private - */ - var $dechanged = true; - - /** - * mcrypt resource for CFB mode - * - * mcrypt's CFB mode, in (and only in) buffered context, - * is broken, so phpseclib implements the CFB mode by it self, - * even when the mcrypt php extension is available. - * - * In order to do the CFB-mode work (fast) phpseclib - * use a separate ECB-mode mcrypt resource. - * - * @link http://phpseclib.sourceforge.net/cfb-demo.phps - * @see self::encrypt() - * @see self::decrypt() - * @see self::_setupMcrypt() - * @var resource - * @access private - */ - var $ecb; - - /** - * Optimizing value while CFB-encrypting - * - * Only relevant if $continuousBuffer enabled - * and $engine == self::ENGINE_MCRYPT - * - * It's faster to re-init $enmcrypt if - * $buffer bytes > $cfb_init_len than - * using the $ecb resource furthermore. - * - * This value depends of the chosen cipher - * and the time it would be needed for it's - * initialization [by mcrypt_generic_init()] - * which, typically, depends on the complexity - * on its internaly Key-expanding algorithm. - * - * @see self::encrypt() - * @var int - * @access private - */ - var $cfb_init_len = 600; - - /** - * Does internal cipher state need to be (re)initialized? - * - * @see self::setKey() - * @see self::setIV() - * @see self::disableContinuousBuffer() - * @var bool - * @access private - */ - var $changed = true; - - /** - * Padding status - * - * @see self::enablePadding() - * @var bool - * @access private - */ - var $padding = true; - - /** - * Is the mode one that is paddable? - * - * @see self::__construct() - * @var bool - * @access private - */ - var $paddable = false; - - /** - * Holds which crypt engine internaly should be use, - * which will be determined automatically on __construct() - * - * Currently available $engines are: - * - self::ENGINE_OPENSSL (very fast, php-extension: openssl, extension_loaded('openssl') required) - * - self::ENGINE_MCRYPT (fast, php-extension: mcrypt, extension_loaded('mcrypt') required) - * - self::ENGINE_INTERNAL (slower, pure php-engine, no php-extension required) - * - * @see self::_setEngine() - * @see self::encrypt() - * @see self::decrypt() - * @var int - * @access private - */ - var $engine; - - /** - * Holds the preferred crypt engine - * - * @see self::_setEngine() - * @see self::setPreferredEngine() - * @var int - * @access private - */ - var $preferredEngine; - - /** - * The mcrypt specific name of the cipher - * - * Only used if $engine == self::ENGINE_MCRYPT - * - * @link http://www.php.net/mcrypt_module_open - * @link http://www.php.net/mcrypt_list_algorithms - * @see self::_setupMcrypt() - * @var string - * @access private - */ - var $cipher_name_mcrypt; - - /** - * The openssl specific name of the cipher - * - * Only used if $engine == self::ENGINE_OPENSSL - * - * @link http://www.php.net/openssl-get-cipher-methods - * @var string - * @access private - */ - var $cipher_name_openssl; - - /** - * The openssl specific name of the cipher in ECB mode - * - * If OpenSSL does not support the mode we're trying to use (CTR) - * it can still be emulated with ECB mode. - * - * @link http://www.php.net/openssl-get-cipher-methods - * @var string - * @access private - */ - var $cipher_name_openssl_ecb; - - /** - * The default salt used by setPassword() - * - * @see self::setPassword() - * @var string - * @access private - */ - var $password_default_salt = 'phpseclib/salt'; - - /** - * The name of the performance-optimized callback function - * - * Used by encrypt() / decrypt() - * only if $engine == self::ENGINE_INTERNAL - * - * @see self::encrypt() - * @see self::decrypt() - * @see self::_setupInlineCrypt() - * @see self::$use_inline_crypt - * @var Callback - * @access private - */ - var $inline_crypt; - - /** - * Holds whether performance-optimized $inline_crypt() can/should be used. - * - * @see self::encrypt() - * @see self::decrypt() - * @see self::inline_crypt - * @var mixed - * @access private - */ - var $use_inline_crypt; - - /** - * If OpenSSL can be used in ECB but not in CTR we can emulate CTR - * - * @see self::_openssl_ctr_process() - * @var bool - * @access private - */ - var $openssl_emulate_ctr = false; - - /** - * Determines what options are passed to openssl_encrypt/decrypt - * - * @see self::isValidEngine() - * @var mixed - * @access private - */ - var $openssl_options; - - /** - * Has the key length explicitly been set or should it be derived from the key, itself? - * - * @see self::setKeyLength() - * @var bool - * @access private - */ - var $explicit_key_length = false; - - /** - * Don't truncate / null pad key - * - * @see self::_clearBuffers() - * @var bool - * @access private - */ - var $skip_key_adjustment = false; - - /** - * Default Constructor. - * - * Determines whether or not the mcrypt extension should be used. - * - * $mode could be: - * - * - self::MODE_ECB - * - * - self::MODE_CBC - * - * - self::MODE_CTR - * - * - self::MODE_CFB - * - * - self::MODE_OFB - * - * If not explicitly set, self::MODE_CBC will be used. - * - * @param int $mode - * @access public - */ - function __construct($mode = self::MODE_CBC) - { - // $mode dependent settings - switch ($mode) { - case self::MODE_ECB: - $this->paddable = true; - $this->mode = self::MODE_ECB; - break; - case self::MODE_CTR: - case self::MODE_CFB: - case self::MODE_OFB: - case self::MODE_STREAM: - $this->mode = $mode; - break; - case self::MODE_CBC: - default: - $this->paddable = true; - $this->mode = self::MODE_CBC; - } - - $this->_setEngine(); - - // Determining whether inline crypting can be used by the cipher - if ($this->use_inline_crypt !== false && function_exists('create_function')) { - $this->use_inline_crypt = true; - } - } - - /** - * Sets the initialization vector. (optional) - * - * SetIV is not required when self::MODE_ECB (or ie for AES: \phpseclib\Crypt\AES::MODE_ECB) is being used. If not explicitly set, it'll be assumed - * to be all zero's. - * - * @access public - * @param string $iv - * @internal Can be overwritten by a sub class, but does not have to be - */ - function setIV($iv) - { - if ($this->mode == self::MODE_ECB) { - return; - } - - $this->iv = $iv; - $this->changed = true; - } - - /** - * Sets the key length. - * - * Keys with explicitly set lengths need to be treated accordingly - * - * @access public - * @param int $length - */ - function setKeyLength($length) - { - $this->explicit_key_length = true; - $this->changed = true; - $this->_setEngine(); - } - - /** - * Returns the current key length in bits - * - * @access public - * @return int - */ - function getKeyLength() - { - return $this->key_length << 3; - } - - /** - * Returns the current block length in bits - * - * @access public - * @return int - */ - function getBlockLength() - { - return $this->block_size << 3; - } - - /** - * Sets the key. - * - * The min/max length(s) of the key depends on the cipher which is used. - * If the key not fits the length(s) of the cipher it will paded with null bytes - * up to the closest valid key length. If the key is more than max length, - * we trim the excess bits. - * - * If the key is not explicitly set, it'll be assumed to be all null bytes. - * - * @access public - * @param string $key - * @internal Could, but not must, extend by the child Crypt_* class - */ - function setKey($key) - { - if (!$this->explicit_key_length) { - $this->setKeyLength(strlen($key) << 3); - $this->explicit_key_length = false; - } - - $this->key = $key; - $this->changed = true; - $this->_setEngine(); - } - - /** - * Sets the password. - * - * Depending on what $method is set to, setPassword()'s (optional) parameters are as follows: - * {@link http://en.wikipedia.org/wiki/PBKDF2 pbkdf2} or pbkdf1: - * $hash, $salt, $count, $dkLen - * - * Where $hash (default = sha1) currently supports the following hashes: see: Crypt/Hash.php - * - * @see Crypt/Hash.php - * @param string $password - * @param string $method - * @return bool - * @access public - * @internal Could, but not must, extend by the child Crypt_* class - */ - function setPassword($password, $method = 'pbkdf2') - { - $key = ''; - - switch ($method) { - default: // 'pbkdf2' or 'pbkdf1' - $func_args = func_get_args(); - - // Hash function - $hash = isset($func_args[2]) ? $func_args[2] : 'sha1'; - - // WPA and WPA2 use the SSID as the salt - $salt = isset($func_args[3]) ? $func_args[3] : $this->password_default_salt; - - // RFC2898#section-4.2 uses 1,000 iterations by default - // WPA and WPA2 use 4,096. - $count = isset($func_args[4]) ? $func_args[4] : 1000; - - // Keylength - if (isset($func_args[5])) { - $dkLen = $func_args[5]; - } else { - $dkLen = $method == 'pbkdf1' ? 2 * $this->key_length : $this->key_length; - } - - switch (true) { - case $method == 'pbkdf1': - $hashObj = new Hash(); - $hashObj->setHash($hash); - if ($dkLen > $hashObj->getLength()) { - user_error('Derived key too long'); - return false; - } - $t = $password . $salt; - for ($i = 0; $i < $count; ++$i) { - $t = $hashObj->hash($t); - } - $key = substr($t, 0, $dkLen); - - $this->setKey(substr($key, 0, $dkLen >> 1)); - $this->setIV(substr($key, $dkLen >> 1)); - - return true; - // Determining if php[>=5.5.0]'s hash_pbkdf2() function avail- and useable - case !function_exists('hash_pbkdf2'): - case !function_exists('hash_algos'): - case !in_array($hash, hash_algos()): - $i = 1; - while (strlen($key) < $dkLen) { - $hmac = new Hash(); - $hmac->setHash($hash); - $hmac->setKey($password); - $f = $u = $hmac->hash($salt . pack('N', $i++)); - for ($j = 2; $j <= $count; ++$j) { - $u = $hmac->hash($u); - $f^= $u; - } - $key.= $f; - } - $key = substr($key, 0, $dkLen); - break; - default: - $key = hash_pbkdf2($hash, $password, $salt, $count, $dkLen, true); - } - } - - $this->setKey($key); - - return true; - } - - /** - * Encrypts a message. - * - * $plaintext will be padded with additional bytes such that it's length is a multiple of the block size. Other cipher - * implementations may or may not pad in the same manner. Other common approaches to padding and the reasons why it's - * necessary are discussed in the following - * URL: - * - * {@link http://www.di-mgt.com.au/cryptopad.html http://www.di-mgt.com.au/cryptopad.html} - * - * An alternative to padding is to, separately, send the length of the file. This is what SSH, in fact, does. - * strlen($plaintext) will still need to be a multiple of the block size, however, arbitrary values can be added to make it that - * length. - * - * @see self::decrypt() - * @access public - * @param string $plaintext - * @return string $ciphertext - * @internal Could, but not must, extend by the child Crypt_* class - */ - function encrypt($plaintext) - { - if ($this->paddable) { - $plaintext = $this->_pad($plaintext); - } - - if ($this->engine === self::ENGINE_OPENSSL) { - if ($this->changed) { - $this->_clearBuffers(); - $this->changed = false; - } - switch ($this->mode) { - case self::MODE_STREAM: - return openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options); - case self::MODE_ECB: - $result = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options); - return !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result; - case self::MODE_CBC: - $result = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $this->encryptIV); - if ($this->continuousBuffer) { - $this->encryptIV = substr($result, -$this->block_size); - } - return !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result; - case self::MODE_CTR: - return $this->_openssl_ctr_process($plaintext, $this->encryptIV, $this->enbuffer); - case self::MODE_CFB: - // cfb loosely routines inspired by openssl's: - // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} - $ciphertext = ''; - if ($this->continuousBuffer) { - $iv = &$this->encryptIV; - $pos = &$this->enbuffer['pos']; - } else { - $iv = $this->encryptIV; - $pos = 0; - } - $len = strlen($plaintext); - $i = 0; - if ($pos) { - $orig_pos = $pos; - $max = $this->block_size - $pos; - if ($len >= $max) { - $i = $max; - $len-= $max; - $pos = 0; - } else { - $i = $len; - $pos+= $len; - $len = 0; - } - // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize - $ciphertext = substr($iv, $orig_pos) ^ $plaintext; - $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); - $plaintext = substr($plaintext, $i); - } - - $overflow = $len % $this->block_size; - - if ($overflow) { - $ciphertext.= openssl_encrypt(substr($plaintext, 0, -$overflow) . str_repeat("\0", $this->block_size), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); - $iv = $this->_string_pop($ciphertext, $this->block_size); - - $size = $len - $overflow; - $block = $iv ^ substr($plaintext, -$overflow); - $iv = substr_replace($iv, $block, 0, $overflow); - $ciphertext.= $block; - $pos = $overflow; - } elseif ($len) { - $ciphertext = openssl_encrypt($plaintext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); - $iv = substr($ciphertext, -$this->block_size); - } - - return $ciphertext; - case self::MODE_OFB: - return $this->_openssl_ofb_process($plaintext, $this->encryptIV, $this->enbuffer); - } - } - - if ($this->engine === self::ENGINE_MCRYPT) { - if ($this->changed) { - $this->_setupMcrypt(); - $this->changed = false; - } - if ($this->enchanged) { - mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV); - $this->enchanged = false; - } - - // re: {@link http://phpseclib.sourceforge.net/cfb-demo.phps} - // using mcrypt's default handing of CFB the above would output two different things. using phpseclib's - // rewritten CFB implementation the above outputs the same thing twice. - if ($this->mode == self::MODE_CFB && $this->continuousBuffer) { - $block_size = $this->block_size; - $iv = &$this->encryptIV; - $pos = &$this->enbuffer['pos']; - $len = strlen($plaintext); - $ciphertext = ''; - $i = 0; - if ($pos) { - $orig_pos = $pos; - $max = $block_size - $pos; - if ($len >= $max) { - $i = $max; - $len-= $max; - $pos = 0; - } else { - $i = $len; - $pos+= $len; - $len = 0; - } - $ciphertext = substr($iv, $orig_pos) ^ $plaintext; - $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); - $this->enbuffer['enmcrypt_init'] = true; - } - if ($len >= $block_size) { - if ($this->enbuffer['enmcrypt_init'] === false || $len > $this->cfb_init_len) { - if ($this->enbuffer['enmcrypt_init'] === true) { - mcrypt_generic_init($this->enmcrypt, $this->key, $iv); - $this->enbuffer['enmcrypt_init'] = false; - } - $ciphertext.= mcrypt_generic($this->enmcrypt, substr($plaintext, $i, $len - $len % $block_size)); - $iv = substr($ciphertext, -$block_size); - $len%= $block_size; - } else { - while ($len >= $block_size) { - $iv = mcrypt_generic($this->ecb, $iv) ^ substr($plaintext, $i, $block_size); - $ciphertext.= $iv; - $len-= $block_size; - $i+= $block_size; - } - } - } - - if ($len) { - $iv = mcrypt_generic($this->ecb, $iv); - $block = $iv ^ substr($plaintext, -$len); - $iv = substr_replace($iv, $block, 0, $len); - $ciphertext.= $block; - $pos = $len; - } - - return $ciphertext; - } - - $ciphertext = mcrypt_generic($this->enmcrypt, $plaintext); - - if (!$this->continuousBuffer) { - mcrypt_generic_init($this->enmcrypt, $this->key, $this->encryptIV); - } - - return $ciphertext; - } - - if ($this->changed) { - $this->_setup(); - $this->changed = false; - } - if ($this->use_inline_crypt) { - $inline = $this->inline_crypt; - return $inline('encrypt', $this, $plaintext); - } - - $buffer = &$this->enbuffer; - $block_size = $this->block_size; - $ciphertext = ''; - switch ($this->mode) { - case self::MODE_ECB: - for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { - $ciphertext.= $this->_encryptBlock(substr($plaintext, $i, $block_size)); - } - break; - case self::MODE_CBC: - $xor = $this->encryptIV; - for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { - $block = substr($plaintext, $i, $block_size); - $block = $this->_encryptBlock($block ^ $xor); - $xor = $block; - $ciphertext.= $block; - } - if ($this->continuousBuffer) { - $this->encryptIV = $xor; - } - break; - case self::MODE_CTR: - $xor = $this->encryptIV; - if (strlen($buffer['ciphertext'])) { - for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { - $block = substr($plaintext, $i, $block_size); - if (strlen($block) > strlen($buffer['ciphertext'])) { - $buffer['ciphertext'].= $this->_encryptBlock($xor); - } - $this->_increment_str($xor); - $key = $this->_string_shift($buffer['ciphertext'], $block_size); - $ciphertext.= $block ^ $key; - } - } else { - for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { - $block = substr($plaintext, $i, $block_size); - $key = $this->_encryptBlock($xor); - $this->_increment_str($xor); - $ciphertext.= $block ^ $key; - } - } - if ($this->continuousBuffer) { - $this->encryptIV = $xor; - if ($start = strlen($plaintext) % $block_size) { - $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; - } - } - break; - case self::MODE_CFB: - // cfb loosely routines inspired by openssl's: - // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} - if ($this->continuousBuffer) { - $iv = &$this->encryptIV; - $pos = &$buffer['pos']; - } else { - $iv = $this->encryptIV; - $pos = 0; - } - $len = strlen($plaintext); - $i = 0; - if ($pos) { - $orig_pos = $pos; - $max = $block_size - $pos; - if ($len >= $max) { - $i = $max; - $len-= $max; - $pos = 0; - } else { - $i = $len; - $pos+= $len; - $len = 0; - } - // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize - $ciphertext = substr($iv, $orig_pos) ^ $plaintext; - $iv = substr_replace($iv, $ciphertext, $orig_pos, $i); - } - while ($len >= $block_size) { - $iv = $this->_encryptBlock($iv) ^ substr($plaintext, $i, $block_size); - $ciphertext.= $iv; - $len-= $block_size; - $i+= $block_size; - } - if ($len) { - $iv = $this->_encryptBlock($iv); - $block = $iv ^ substr($plaintext, $i); - $iv = substr_replace($iv, $block, 0, $len); - $ciphertext.= $block; - $pos = $len; - } - break; - case self::MODE_OFB: - $xor = $this->encryptIV; - if (strlen($buffer['xor'])) { - for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { - $block = substr($plaintext, $i, $block_size); - if (strlen($block) > strlen($buffer['xor'])) { - $xor = $this->_encryptBlock($xor); - $buffer['xor'].= $xor; - } - $key = $this->_string_shift($buffer['xor'], $block_size); - $ciphertext.= $block ^ $key; - } - } else { - for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { - $xor = $this->_encryptBlock($xor); - $ciphertext.= substr($plaintext, $i, $block_size) ^ $xor; - } - $key = $xor; - } - if ($this->continuousBuffer) { - $this->encryptIV = $xor; - if ($start = strlen($plaintext) % $block_size) { - $buffer['xor'] = substr($key, $start) . $buffer['xor']; - } - } - break; - case self::MODE_STREAM: - $ciphertext = $this->_encryptBlock($plaintext); - break; - } - - return $ciphertext; - } - - /** - * Decrypts a message. - * - * If strlen($ciphertext) is not a multiple of the block size, null bytes will be added to the end of the string until - * it is. - * - * @see self::encrypt() - * @access public - * @param string $ciphertext - * @return string $plaintext - * @internal Could, but not must, extend by the child Crypt_* class - */ - function decrypt($ciphertext) - { - if ($this->paddable) { - // we pad with chr(0) since that's what mcrypt_generic does. to quote from {@link http://www.php.net/function.mcrypt-generic}: - // "The data is padded with "\0" to make sure the length of the data is n * blocksize." - $ciphertext = str_pad($ciphertext, strlen($ciphertext) + ($this->block_size - strlen($ciphertext) % $this->block_size) % $this->block_size, chr(0)); - } - - if ($this->engine === self::ENGINE_OPENSSL) { - if ($this->changed) { - $this->_clearBuffers(); - $this->changed = false; - } - switch ($this->mode) { - case self::MODE_STREAM: - $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options); - break; - case self::MODE_ECB: - if (!defined('OPENSSL_RAW_DATA')) { - $ciphertext.= openssl_encrypt('', $this->cipher_name_openssl_ecb, $this->key, true); - } - $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options); - break; - case self::MODE_CBC: - if (!defined('OPENSSL_RAW_DATA')) { - $padding = str_repeat(chr($this->block_size), $this->block_size) ^ substr($ciphertext, -$this->block_size); - $ciphertext.= substr(openssl_encrypt($padding, $this->cipher_name_openssl_ecb, $this->key, true), 0, $this->block_size); - } - $plaintext = openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $this->decryptIV); - if ($this->continuousBuffer) { - $this->decryptIV = substr($ciphertext, -$this->block_size); - } - break; - case self::MODE_CTR: - $plaintext = $this->_openssl_ctr_process($ciphertext, $this->decryptIV, $this->debuffer); - break; - case self::MODE_CFB: - // cfb loosely routines inspired by openssl's: - // {@link http://cvs.openssl.org/fileview?f=openssl/crypto/modes/cfb128.c&v=1.3.2.2.2.1} - $plaintext = ''; - if ($this->continuousBuffer) { - $iv = &$this->decryptIV; - $pos = &$this->buffer['pos']; - } else { - $iv = $this->decryptIV; - $pos = 0; - } - $len = strlen($ciphertext); - $i = 0; - if ($pos) { - $orig_pos = $pos; - $max = $this->block_size - $pos; - if ($len >= $max) { - $i = $max; - $len-= $max; - $pos = 0; - } else { - $i = $len; - $pos+= $len; - $len = 0; - } - // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $this->blocksize - $plaintext = substr($iv, $orig_pos) ^ $ciphertext; - $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); - $ciphertext = substr($ciphertext, $i); - } - $overflow = $len % $this->block_size; - if ($overflow) { - $plaintext.= openssl_decrypt(substr($ciphertext, 0, -$overflow), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); - if ($len - $overflow) { - $iv = substr($ciphertext, -$overflow - $this->block_size, -$overflow); - } - $iv = openssl_encrypt(str_repeat("\0", $this->block_size), $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); - $plaintext.= $iv ^ substr($ciphertext, -$overflow); - $iv = substr_replace($iv, substr($ciphertext, -$overflow), 0, $overflow); - $pos = $overflow; - } elseif ($len) { - $plaintext.= openssl_decrypt($ciphertext, $this->cipher_name_openssl, $this->key, $this->openssl_options, $iv); - $iv = substr($ciphertext, -$this->block_size); - } - break; - case self::MODE_OFB: - $plaintext = $this->_openssl_ofb_process($ciphertext, $this->decryptIV, $this->debuffer); - } - - return $this->paddable ? $this->_unpad($plaintext) : $plaintext; - } - - if ($this->engine === self::ENGINE_MCRYPT) { - $block_size = $this->block_size; - if ($this->changed) { - $this->_setupMcrypt(); - $this->changed = false; - } - if ($this->dechanged) { - mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV); - $this->dechanged = false; - } - - if ($this->mode == self::MODE_CFB && $this->continuousBuffer) { - $iv = &$this->decryptIV; - $pos = &$this->debuffer['pos']; - $len = strlen($ciphertext); - $plaintext = ''; - $i = 0; - if ($pos) { - $orig_pos = $pos; - $max = $block_size - $pos; - if ($len >= $max) { - $i = $max; - $len-= $max; - $pos = 0; - } else { - $i = $len; - $pos+= $len; - $len = 0; - } - // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize - $plaintext = substr($iv, $orig_pos) ^ $ciphertext; - $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); - } - if ($len >= $block_size) { - $cb = substr($ciphertext, $i, $len - $len % $block_size); - $plaintext.= mcrypt_generic($this->ecb, $iv . $cb) ^ $cb; - $iv = substr($cb, -$block_size); - $len%= $block_size; - } - if ($len) { - $iv = mcrypt_generic($this->ecb, $iv); - $plaintext.= $iv ^ substr($ciphertext, -$len); - $iv = substr_replace($iv, substr($ciphertext, -$len), 0, $len); - $pos = $len; - } - - return $plaintext; - } - - $plaintext = mdecrypt_generic($this->demcrypt, $ciphertext); - - if (!$this->continuousBuffer) { - mcrypt_generic_init($this->demcrypt, $this->key, $this->decryptIV); - } - - return $this->paddable ? $this->_unpad($plaintext) : $plaintext; - } - - if ($this->changed) { - $this->_setup(); - $this->changed = false; - } - if ($this->use_inline_crypt) { - $inline = $this->inline_crypt; - return $inline('decrypt', $this, $ciphertext); - } - - $block_size = $this->block_size; - - $buffer = &$this->debuffer; - $plaintext = ''; - switch ($this->mode) { - case self::MODE_ECB: - for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { - $plaintext.= $this->_decryptBlock(substr($ciphertext, $i, $block_size)); - } - break; - case self::MODE_CBC: - $xor = $this->decryptIV; - for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { - $block = substr($ciphertext, $i, $block_size); - $plaintext.= $this->_decryptBlock($block) ^ $xor; - $xor = $block; - } - if ($this->continuousBuffer) { - $this->decryptIV = $xor; - } - break; - case self::MODE_CTR: - $xor = $this->decryptIV; - if (strlen($buffer['ciphertext'])) { - for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { - $block = substr($ciphertext, $i, $block_size); - if (strlen($block) > strlen($buffer['ciphertext'])) { - $buffer['ciphertext'].= $this->_encryptBlock($xor); - $this->_increment_str($xor); - } - $key = $this->_string_shift($buffer['ciphertext'], $block_size); - $plaintext.= $block ^ $key; - } - } else { - for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { - $block = substr($ciphertext, $i, $block_size); - $key = $this->_encryptBlock($xor); - $this->_increment_str($xor); - $plaintext.= $block ^ $key; - } - } - if ($this->continuousBuffer) { - $this->decryptIV = $xor; - if ($start = strlen($ciphertext) % $block_size) { - $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; - } - } - break; - case self::MODE_CFB: - if ($this->continuousBuffer) { - $iv = &$this->decryptIV; - $pos = &$buffer['pos']; - } else { - $iv = $this->decryptIV; - $pos = 0; - } - $len = strlen($ciphertext); - $i = 0; - if ($pos) { - $orig_pos = $pos; - $max = $block_size - $pos; - if ($len >= $max) { - $i = $max; - $len-= $max; - $pos = 0; - } else { - $i = $len; - $pos+= $len; - $len = 0; - } - // ie. $i = min($max, $len), $len-= $i, $pos+= $i, $pos%= $blocksize - $plaintext = substr($iv, $orig_pos) ^ $ciphertext; - $iv = substr_replace($iv, substr($ciphertext, 0, $i), $orig_pos, $i); - } - while ($len >= $block_size) { - $iv = $this->_encryptBlock($iv); - $cb = substr($ciphertext, $i, $block_size); - $plaintext.= $iv ^ $cb; - $iv = $cb; - $len-= $block_size; - $i+= $block_size; - } - if ($len) { - $iv = $this->_encryptBlock($iv); - $plaintext.= $iv ^ substr($ciphertext, $i); - $iv = substr_replace($iv, substr($ciphertext, $i), 0, $len); - $pos = $len; - } - break; - case self::MODE_OFB: - $xor = $this->decryptIV; - if (strlen($buffer['xor'])) { - for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { - $block = substr($ciphertext, $i, $block_size); - if (strlen($block) > strlen($buffer['xor'])) { - $xor = $this->_encryptBlock($xor); - $buffer['xor'].= $xor; - } - $key = $this->_string_shift($buffer['xor'], $block_size); - $plaintext.= $block ^ $key; - } - } else { - for ($i = 0; $i < strlen($ciphertext); $i+=$block_size) { - $xor = $this->_encryptBlock($xor); - $plaintext.= substr($ciphertext, $i, $block_size) ^ $xor; - } - $key = $xor; - } - if ($this->continuousBuffer) { - $this->decryptIV = $xor; - if ($start = strlen($ciphertext) % $block_size) { - $buffer['xor'] = substr($key, $start) . $buffer['xor']; - } - } - break; - case self::MODE_STREAM: - $plaintext = $this->_decryptBlock($ciphertext); - break; - } - return $this->paddable ? $this->_unpad($plaintext) : $plaintext; - } - - /** - * OpenSSL CTR Processor - * - * PHP's OpenSSL bindings do not operate in continuous mode so we'll wrap around it. Since the keystream - * for CTR is the same for both encrypting and decrypting this function is re-used by both Base::encrypt() - * and Base::decrypt(). Also, OpenSSL doesn't implement CTR for all of it's symmetric ciphers so this - * function will emulate CTR with ECB when necesary. - * - * @see self::encrypt() - * @see self::decrypt() - * @param string $plaintext - * @param string $encryptIV - * @param array $buffer - * @return string - * @access private - */ - function _openssl_ctr_process($plaintext, &$encryptIV, &$buffer) - { - $ciphertext = ''; - - $block_size = $this->block_size; - $key = $this->key; - - if ($this->openssl_emulate_ctr) { - $xor = $encryptIV; - if (strlen($buffer['ciphertext'])) { - for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { - $block = substr($plaintext, $i, $block_size); - if (strlen($block) > strlen($buffer['ciphertext'])) { - $result = openssl_encrypt($xor, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); - $result = !defined('OPENSSL_RAW_DATA') ? substr($result, 0, -$this->block_size) : $result; - $buffer['ciphertext'].= $result; - } - $this->_increment_str($xor); - $otp = $this->_string_shift($buffer['ciphertext'], $block_size); - $ciphertext.= $block ^ $otp; - } - } else { - for ($i = 0; $i < strlen($plaintext); $i+=$block_size) { - $block = substr($plaintext, $i, $block_size); - $otp = openssl_encrypt($xor, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); - $otp = !defined('OPENSSL_RAW_DATA') ? substr($otp, 0, -$this->block_size) : $otp; - $this->_increment_str($xor); - $ciphertext.= $block ^ $otp; - } - } - if ($this->continuousBuffer) { - $encryptIV = $xor; - if ($start = strlen($plaintext) % $block_size) { - $buffer['ciphertext'] = substr($key, $start) . $buffer['ciphertext']; - } - } - - return $ciphertext; - } - - if (strlen($buffer['ciphertext'])) { - $ciphertext = $plaintext ^ $this->_string_shift($buffer['ciphertext'], strlen($plaintext)); - $plaintext = substr($plaintext, strlen($ciphertext)); - - if (!strlen($plaintext)) { - return $ciphertext; - } - } - - $overflow = strlen($plaintext) % $block_size; - if ($overflow) { - $plaintext2 = $this->_string_pop($plaintext, $overflow); // ie. trim $plaintext to a multiple of $block_size and put rest of $plaintext in $plaintext2 - $encrypted = openssl_encrypt($plaintext . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); - $temp = $this->_string_pop($encrypted, $block_size); - $ciphertext.= $encrypted . ($plaintext2 ^ $temp); - if ($this->continuousBuffer) { - $buffer['ciphertext'] = substr($temp, $overflow); - $encryptIV = $temp; - } - } elseif (!strlen($buffer['ciphertext'])) { - $ciphertext.= openssl_encrypt($plaintext . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); - $temp = $this->_string_pop($ciphertext, $block_size); - if ($this->continuousBuffer) { - $encryptIV = $temp; - } - } - if ($this->continuousBuffer) { - if (!defined('OPENSSL_RAW_DATA')) { - $encryptIV.= openssl_encrypt('', $this->cipher_name_openssl_ecb, $key, $this->openssl_options); - } - $encryptIV = openssl_decrypt($encryptIV, $this->cipher_name_openssl_ecb, $key, $this->openssl_options); - if ($overflow) { - $this->_increment_str($encryptIV); - } - } - - return $ciphertext; - } - - /** - * OpenSSL OFB Processor - * - * PHP's OpenSSL bindings do not operate in continuous mode so we'll wrap around it. Since the keystream - * for OFB is the same for both encrypting and decrypting this function is re-used by both Base::encrypt() - * and Base::decrypt(). - * - * @see self::encrypt() - * @see self::decrypt() - * @param string $plaintext - * @param string $encryptIV - * @param array $buffer - * @return string - * @access private - */ - function _openssl_ofb_process($plaintext, &$encryptIV, &$buffer) - { - if (strlen($buffer['xor'])) { - $ciphertext = $plaintext ^ $buffer['xor']; - $buffer['xor'] = substr($buffer['xor'], strlen($ciphertext)); - $plaintext = substr($plaintext, strlen($ciphertext)); - } else { - $ciphertext = ''; - } - - $block_size = $this->block_size; - - $len = strlen($plaintext); - $key = $this->key; - $overflow = $len % $block_size; - - if (strlen($plaintext)) { - if ($overflow) { - $ciphertext.= openssl_encrypt(substr($plaintext, 0, -$overflow) . str_repeat("\0", $block_size), $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); - $xor = $this->_string_pop($ciphertext, $block_size); - if ($this->continuousBuffer) { - $encryptIV = $xor; - } - $ciphertext.= $this->_string_shift($xor, $overflow) ^ substr($plaintext, -$overflow); - if ($this->continuousBuffer) { - $buffer['xor'] = $xor; - } - } else { - $ciphertext = openssl_encrypt($plaintext, $this->cipher_name_openssl, $key, $this->openssl_options, $encryptIV); - if ($this->continuousBuffer) { - $encryptIV = substr($ciphertext, -$block_size) ^ substr($plaintext, -$block_size); - } - } - } - - return $ciphertext; - } - - /** - * phpseclib <-> OpenSSL Mode Mapper - * - * May need to be overwritten by classes extending this one in some cases - * - * @return int - * @access private - */ - function _openssl_translate_mode() - { - switch ($this->mode) { - case self::MODE_ECB: - return 'ecb'; - case self::MODE_CBC: - return 'cbc'; - case self::MODE_CTR: - return 'ctr'; - case self::MODE_CFB: - return 'cfb'; - case self::MODE_OFB: - return 'ofb'; - } - } - - /** - * Pad "packets". - * - * Block ciphers working by encrypting between their specified [$this->]block_size at a time - * If you ever need to encrypt or decrypt something that isn't of the proper length, it becomes necessary to - * pad the input so that it is of the proper length. - * - * Padding is enabled by default. Sometimes, however, it is undesirable to pad strings. Such is the case in SSH, - * where "packets" are padded with random bytes before being encrypted. Unpad these packets and you risk stripping - * away characters that shouldn't be stripped away. (SSH knows how many bytes are added because the length is - * transmitted separately) - * - * @see self::disablePadding() - * @access public - */ - function enablePadding() - { - $this->padding = true; - } - - /** - * Do not pad packets. - * - * @see self::enablePadding() - * @access public - */ - function disablePadding() - { - $this->padding = false; - } - - /** - * Treat consecutive "packets" as if they are a continuous buffer. - * - * Say you have a 32-byte plaintext $plaintext. Using the default behavior, the two following code snippets - * will yield different outputs: - * - * - * echo $rijndael->encrypt(substr($plaintext, 0, 16)); - * echo $rijndael->encrypt(substr($plaintext, 16, 16)); - * - * - * echo $rijndael->encrypt($plaintext); - * - * - * The solution is to enable the continuous buffer. Although this will resolve the above discrepancy, it creates - * another, as demonstrated with the following: - * - * - * $rijndael->encrypt(substr($plaintext, 0, 16)); - * echo $rijndael->decrypt($rijndael->encrypt(substr($plaintext, 16, 16))); - * - * - * echo $rijndael->decrypt($rijndael->encrypt(substr($plaintext, 16, 16))); - * - * - * With the continuous buffer disabled, these would yield the same output. With it enabled, they yield different - * outputs. The reason is due to the fact that the initialization vector's change after every encryption / - * decryption round when the continuous buffer is enabled. When it's disabled, they remain constant. - * - * Put another way, when the continuous buffer is enabled, the state of the \phpseclib\Crypt\*() object changes after each - * encryption / decryption round, whereas otherwise, it'd remain constant. For this reason, it's recommended that - * continuous buffers not be used. They do offer better security and are, in fact, sometimes required (SSH uses them), - * however, they are also less intuitive and more likely to cause you problems. - * - * @see self::disableContinuousBuffer() - * @access public - * @internal Could, but not must, extend by the child Crypt_* class - */ - function enableContinuousBuffer() - { - if ($this->mode == self::MODE_ECB) { - return; - } - - $this->continuousBuffer = true; - - $this->_setEngine(); - } - - /** - * Treat consecutive packets as if they are a discontinuous buffer. - * - * The default behavior. - * - * @see self::enableContinuousBuffer() - * @access public - * @internal Could, but not must, extend by the child Crypt_* class - */ - function disableContinuousBuffer() - { - if ($this->mode == self::MODE_ECB) { - return; - } - if (!$this->continuousBuffer) { - return; - } - - $this->continuousBuffer = false; - $this->changed = true; - - $this->_setEngine(); - } - - /** - * Test for engine validity - * - * @see self::__construct() - * @param int $engine - * @access public - * @return bool - */ - function isValidEngine($engine) - { - switch ($engine) { - case self::ENGINE_OPENSSL: - if ($this->mode == self::MODE_STREAM && $this->continuousBuffer) { - return false; - } - $this->openssl_emulate_ctr = false; - $result = $this->cipher_name_openssl && - extension_loaded('openssl') && - // PHP 5.3.0 - 5.3.2 did not let you set IV's - version_compare(PHP_VERSION, '5.3.3', '>='); - if (!$result) { - return false; - } - - // prior to PHP 5.4.0 OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING were not defined. instead of expecting an integer - // $options openssl_encrypt expected a boolean $raw_data. - if (!defined('OPENSSL_RAW_DATA')) { - $this->openssl_options = true; - } else { - $this->openssl_options = OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING; - } - - $methods = openssl_get_cipher_methods(); - if (in_array($this->cipher_name_openssl, $methods)) { - return true; - } - // not all of openssl's symmetric cipher's support ctr. for those - // that don't we'll emulate it - switch ($this->mode) { - case self::MODE_CTR: - if (in_array($this->cipher_name_openssl_ecb, $methods)) { - $this->openssl_emulate_ctr = true; - return true; - } - } - return false; - case self::ENGINE_MCRYPT: - return $this->cipher_name_mcrypt && - extension_loaded('mcrypt') && - in_array($this->cipher_name_mcrypt, mcrypt_list_algorithms()); - case self::ENGINE_INTERNAL: - return true; - } - - return false; - } - - /** - * Sets the preferred crypt engine - * - * Currently, $engine could be: - * - * - \phpseclib\Crypt\Base::ENGINE_OPENSSL [very fast] - * - * - \phpseclib\Crypt\Base::ENGINE_MCRYPT [fast] - * - * - \phpseclib\Crypt\Base::ENGINE_INTERNAL [slow] - * - * If the preferred crypt engine is not available the fastest available one will be used - * - * @see self::__construct() - * @param int $engine - * @access public - */ - function setPreferredEngine($engine) - { - switch ($engine) { - //case self::ENGINE_OPENSSL; - case self::ENGINE_MCRYPT: - case self::ENGINE_INTERNAL: - $this->preferredEngine = $engine; - break; - default: - $this->preferredEngine = self::ENGINE_OPENSSL; - } - - $this->_setEngine(); - } - - /** - * Returns the engine currently being utilized - * - * @see self::_setEngine() - * @access public - */ - function getEngine() - { - return $this->engine; - } - - /** - * Sets the engine as appropriate - * - * @see self::__construct() - * @access private - */ - function _setEngine() - { - $this->engine = null; - - $candidateEngines = array( - $this->preferredEngine, - self::ENGINE_OPENSSL, - self::ENGINE_MCRYPT - ); - foreach ($candidateEngines as $engine) { - if ($this->isValidEngine($engine)) { - $this->engine = $engine; - break; - } - } - if (!$this->engine) { - $this->engine = self::ENGINE_INTERNAL; - } - - if ($this->engine != self::ENGINE_MCRYPT && $this->enmcrypt) { - // Closing the current mcrypt resource(s). _mcryptSetup() will, if needed, - // (re)open them with the module named in $this->cipher_name_mcrypt - mcrypt_module_close($this->enmcrypt); - mcrypt_module_close($this->demcrypt); - $this->enmcrypt = null; - $this->demcrypt = null; - - if ($this->ecb) { - mcrypt_module_close($this->ecb); - $this->ecb = null; - } - } - - $this->changed = true; - } - - /** - * Encrypts a block - * - * Note: Must be extended by the child \phpseclib\Crypt\* class - * - * @access private - * @param string $in - * @return string - */ - abstract function _encryptBlock($in); - - /** - * Decrypts a block - * - * Note: Must be extended by the child \phpseclib\Crypt\* class - * - * @access private - * @param string $in - * @return string - */ - abstract function _decryptBlock($in); - - /** - * Setup the key (expansion) - * - * Only used if $engine == self::ENGINE_INTERNAL - * - * Note: Must extend by the child \phpseclib\Crypt\* class - * - * @see self::_setup() - * @access private - */ - abstract function _setupKey(); - - /** - * Setup the self::ENGINE_INTERNAL $engine - * - * (re)init, if necessary, the internal cipher $engine and flush all $buffers - * Used (only) if $engine == self::ENGINE_INTERNAL - * - * _setup() will be called each time if $changed === true - * typically this happens when using one or more of following public methods: - * - * - setKey() - * - * - setIV() - * - * - disableContinuousBuffer() - * - * - First run of encrypt() / decrypt() with no init-settings - * - * @see self::setKey() - * @see self::setIV() - * @see self::disableContinuousBuffer() - * @access private - * @internal _setup() is always called before en/decryption. - * @internal Could, but not must, extend by the child Crypt_* class - */ - function _setup() - { - $this->_clearBuffers(); - $this->_setupKey(); - - if ($this->use_inline_crypt) { - $this->_setupInlineCrypt(); - } - } - - /** - * Setup the self::ENGINE_MCRYPT $engine - * - * (re)init, if necessary, the (ext)mcrypt resources and flush all $buffers - * Used (only) if $engine = self::ENGINE_MCRYPT - * - * _setupMcrypt() will be called each time if $changed === true - * typically this happens when using one or more of following public methods: - * - * - setKey() - * - * - setIV() - * - * - disableContinuousBuffer() - * - * - First run of encrypt() / decrypt() - * - * @see self::setKey() - * @see self::setIV() - * @see self::disableContinuousBuffer() - * @access private - * @internal Could, but not must, extend by the child Crypt_* class - */ - function _setupMcrypt() - { - $this->_clearBuffers(); - $this->enchanged = $this->dechanged = true; - - if (!isset($this->enmcrypt)) { - static $mcrypt_modes = array( - self::MODE_CTR => 'ctr', - self::MODE_ECB => MCRYPT_MODE_ECB, - self::MODE_CBC => MCRYPT_MODE_CBC, - self::MODE_CFB => 'ncfb', - self::MODE_OFB => MCRYPT_MODE_NOFB, - self::MODE_STREAM => MCRYPT_MODE_STREAM, - ); - - $this->demcrypt = mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], ''); - $this->enmcrypt = mcrypt_module_open($this->cipher_name_mcrypt, '', $mcrypt_modes[$this->mode], ''); - - // we need the $ecb mcrypt resource (only) in MODE_CFB with enableContinuousBuffer() - // to workaround mcrypt's broken ncfb implementation in buffered mode - // see: {@link http://phpseclib.sourceforge.net/cfb-demo.phps} - if ($this->mode == self::MODE_CFB) { - $this->ecb = mcrypt_module_open($this->cipher_name_mcrypt, '', MCRYPT_MODE_ECB, ''); - } - } // else should mcrypt_generic_deinit be called? - - if ($this->mode == self::MODE_CFB) { - mcrypt_generic_init($this->ecb, $this->key, str_repeat("\0", $this->block_size)); - } - } - - /** - * Pads a string - * - * Pads a string using the RSA PKCS padding standards so that its length is a multiple of the blocksize. - * $this->block_size - (strlen($text) % $this->block_size) bytes are added, each of which is equal to - * chr($this->block_size - (strlen($text) % $this->block_size) - * - * If padding is disabled and $text is not a multiple of the blocksize, the string will be padded regardless - * and padding will, hence forth, be enabled. - * - * @see self::_unpad() - * @param string $text - * @access private - * @return string - */ - function _pad($text) - { - $length = strlen($text); - - if (!$this->padding) { - if ($length % $this->block_size == 0) { - return $text; - } else { - user_error("The plaintext's length ($length) is not a multiple of the block size ({$this->block_size})"); - $this->padding = true; - } - } - - $pad = $this->block_size - ($length % $this->block_size); - - return str_pad($text, $length + $pad, chr($pad)); - } - - /** - * Unpads a string. - * - * If padding is enabled and the reported padding length is invalid the encryption key will be assumed to be wrong - * and false will be returned. - * - * @see self::_pad() - * @param string $text - * @access private - * @return string - */ - function _unpad($text) - { - if (!$this->padding) { - return $text; - } - - $length = ord($text[strlen($text) - 1]); - - if (!$length || $length > $this->block_size) { - return false; - } - - return substr($text, 0, -$length); - } - - /** - * Clears internal buffers - * - * Clearing/resetting the internal buffers is done everytime - * after disableContinuousBuffer() or on cipher $engine (re)init - * ie after setKey() or setIV() - * - * @access public - * @internal Could, but not must, extend by the child Crypt_* class - */ - function _clearBuffers() - { - $this->enbuffer = $this->debuffer = array('ciphertext' => '', 'xor' => '', 'pos' => 0, 'enmcrypt_init' => true); - - // mcrypt's handling of invalid's $iv: - // $this->encryptIV = $this->decryptIV = strlen($this->iv) == $this->block_size ? $this->iv : str_repeat("\0", $this->block_size); - $this->encryptIV = $this->decryptIV = str_pad(substr($this->iv, 0, $this->block_size), $this->block_size, "\0"); - - if (!$this->skip_key_adjustment) { - $this->key = str_pad(substr($this->key, 0, $this->key_length), $this->key_length, "\0"); - } - } - - /** - * String Shift - * - * Inspired by array_shift - * - * @param string $string - * @param int $index - * @access private - * @return string - */ - function _string_shift(&$string, $index = 1) - { - $substr = substr($string, 0, $index); - $string = substr($string, $index); - return $substr; - } - - /** - * String Pop - * - * Inspired by array_pop - * - * @param string $string - * @param int $index - * @access private - * @return string - */ - function _string_pop(&$string, $index = 1) - { - $substr = substr($string, -$index); - $string = substr($string, 0, -$index); - return $substr; - } - - /** - * Increment the current string - * - * @see self::decrypt() - * @see self::encrypt() - * @param string $var - * @access private - */ - function _increment_str(&$var) - { - for ($i = 4; $i <= strlen($var); $i+= 4) { - $temp = substr($var, -$i, 4); - switch ($temp) { - case "\xFF\xFF\xFF\xFF": - $var = substr_replace($var, "\x00\x00\x00\x00", -$i, 4); - break; - case "\x7F\xFF\xFF\xFF": - $var = substr_replace($var, "\x80\x00\x00\x00", -$i, 4); - return; - default: - $temp = unpack('Nnum', $temp); - $var = substr_replace($var, pack('N', $temp['num'] + 1), -$i, 4); - return; - } - } - - $remainder = strlen($var) % 4; - - if ($remainder == 0) { - return; - } - - $temp = unpack('Nnum', str_pad(substr($var, 0, $remainder), 4, "\0", STR_PAD_LEFT)); - $temp = substr(pack('N', $temp['num'] + 1), -$remainder); - $var = substr_replace($var, $temp, 0, $remainder); - } - - /** - * Setup the performance-optimized function for de/encrypt() - * - * Stores the created (or existing) callback function-name - * in $this->inline_crypt - * - * Internally for phpseclib developers: - * - * _setupInlineCrypt() would be called only if: - * - * - $engine == self::ENGINE_INTERNAL and - * - * - $use_inline_crypt === true - * - * - each time on _setup(), after(!) _setupKey() - * - * - * This ensures that _setupInlineCrypt() has always a - * full ready2go initializated internal cipher $engine state - * where, for example, the keys allready expanded, - * keys/block_size calculated and such. - * - * It is, each time if called, the responsibility of _setupInlineCrypt(): - * - * - to set $this->inline_crypt to a valid and fully working callback function - * as a (faster) replacement for encrypt() / decrypt() - * - * - NOT to create unlimited callback functions (for memory reasons!) - * no matter how often _setupInlineCrypt() would be called. At some - * point of amount they must be generic re-useable. - * - * - the code of _setupInlineCrypt() it self, - * and the generated callback code, - * must be, in following order: - * - 100% safe - * - 100% compatible to encrypt()/decrypt() - * - using only php5+ features/lang-constructs/php-extensions if - * compatibility (down to php4) or fallback is provided - * - readable/maintainable/understandable/commented and... not-cryptic-styled-code :-) - * - >= 10% faster than encrypt()/decrypt() [which is, by the way, - * the reason for the existence of _setupInlineCrypt() :-)] - * - memory-nice - * - short (as good as possible) - * - * Note: - _setupInlineCrypt() is using _createInlineCryptFunction() to create the full callback function code. - * - In case of using inline crypting, _setupInlineCrypt() must extend by the child \phpseclib\Crypt\* class. - * - The following variable names are reserved: - * - $_* (all variable names prefixed with an underscore) - * - $self (object reference to it self. Do not use $this, but $self instead) - * - $in (the content of $in has to en/decrypt by the generated code) - * - The callback function should not use the 'return' statement, but en/decrypt'ing the content of $in only - * - * - * @see self::_setup() - * @see self::_createInlineCryptFunction() - * @see self::encrypt() - * @see self::decrypt() - * @access private - * @internal If a Crypt_* class providing inline crypting it must extend _setupInlineCrypt() - */ - function _setupInlineCrypt() - { - // If, for any reason, an extending \phpseclib\Crypt\Base() \phpseclib\Crypt\* class - // not using inline crypting then it must be ensured that: $this->use_inline_crypt = false - // ie in the class var declaration of $use_inline_crypt in general for the \phpseclib\Crypt\* class, - // in the constructor at object instance-time - // or, if it's runtime-specific, at runtime - - $this->use_inline_crypt = false; - } - - /** - * Creates the performance-optimized function for en/decrypt() - * - * Internally for phpseclib developers: - * - * _createInlineCryptFunction(): - * - * - merge the $cipher_code [setup'ed by _setupInlineCrypt()] - * with the current [$this->]mode of operation code - * - * - create the $inline function, which called by encrypt() / decrypt() - * as its replacement to speed up the en/decryption operations. - * - * - return the name of the created $inline callback function - * - * - used to speed up en/decryption - * - * - * - * The main reason why can speed up things [up to 50%] this way are: - * - * - using variables more effective then regular. - * (ie no use of expensive arrays but integers $k_0, $k_1 ... - * or even, for example, the pure $key[] values hardcoded) - * - * - avoiding 1000's of function calls of ie _encryptBlock() - * but inlining the crypt operations. - * in the mode of operation for() loop. - * - * - full loop unroll the (sometimes key-dependent) rounds - * avoiding this way ++$i counters and runtime-if's etc... - * - * The basic code architectur of the generated $inline en/decrypt() - * lambda function, in pseudo php, is: - * - * - * +----------------------------------------------------------------------------------------------+ - * | callback $inline = create_function: | - * | lambda_function_0001_crypt_ECB($action, $text) | - * | { | - * | INSERT PHP CODE OF: | - * | $cipher_code['init_crypt']; // general init code. | - * | // ie: $sbox'es declarations used for | - * | // encrypt and decrypt'ing. | - * | | - * | switch ($action) { | - * | case 'encrypt': | - * | INSERT PHP CODE OF: | - * | $cipher_code['init_encrypt']; // encrypt sepcific init code. | - * | ie: specified $key or $box | - * | declarations for encrypt'ing. | - * | | - * | foreach ($ciphertext) { | - * | $in = $block_size of $ciphertext; | - * | | - * | INSERT PHP CODE OF: | - * | $cipher_code['encrypt_block']; // encrypt's (string) $in, which is always: | - * | // strlen($in) == $this->block_size | - * | // here comes the cipher algorithm in action | - * | // for encryption. | - * | // $cipher_code['encrypt_block'] has to | - * | // encrypt the content of the $in variable | - * | | - * | $plaintext .= $in; | - * | } | - * | return $plaintext; | - * | | - * | case 'decrypt': | - * | INSERT PHP CODE OF: | - * | $cipher_code['init_decrypt']; // decrypt sepcific init code | - * | ie: specified $key or $box | - * | declarations for decrypt'ing. | - * | foreach ($plaintext) { | - * | $in = $block_size of $plaintext; | - * | | - * | INSERT PHP CODE OF: | - * | $cipher_code['decrypt_block']; // decrypt's (string) $in, which is always | - * | // strlen($in) == $this->block_size | - * | // here comes the cipher algorithm in action | - * | // for decryption. | - * | // $cipher_code['decrypt_block'] has to | - * | // decrypt the content of the $in variable | - * | $ciphertext .= $in; | - * | } | - * | return $ciphertext; | - * | } | - * | } | - * +----------------------------------------------------------------------------------------------+ - * - * - * See also the \phpseclib\Crypt\*::_setupInlineCrypt()'s for - * productive inline $cipher_code's how they works. - * - * Structure of: - * - * $cipher_code = array( - * 'init_crypt' => (string) '', // optional - * 'init_encrypt' => (string) '', // optional - * 'init_decrypt' => (string) '', // optional - * 'encrypt_block' => (string) '', // required - * 'decrypt_block' => (string) '' // required - * ); - * - * - * @see self::_setupInlineCrypt() - * @see self::encrypt() - * @see self::decrypt() - * @param array $cipher_code - * @access private - * @return string (the name of the created callback function) - */ - function _createInlineCryptFunction($cipher_code) - { - $block_size = $this->block_size; - - // optional - $init_crypt = isset($cipher_code['init_crypt']) ? $cipher_code['init_crypt'] : ''; - $init_encrypt = isset($cipher_code['init_encrypt']) ? $cipher_code['init_encrypt'] : ''; - $init_decrypt = isset($cipher_code['init_decrypt']) ? $cipher_code['init_decrypt'] : ''; - // required - $encrypt_block = $cipher_code['encrypt_block']; - $decrypt_block = $cipher_code['decrypt_block']; - - // Generating mode of operation inline code, - // merged with the $cipher_code algorithm - // for encrypt- and decryption. - switch ($this->mode) { - case self::MODE_ECB: - $encrypt = $init_encrypt . ' - $_ciphertext = ""; - $_plaintext_len = strlen($_text); - - for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { - $in = substr($_text, $_i, '.$block_size.'); - '.$encrypt_block.' - $_ciphertext.= $in; - } - - return $_ciphertext; - '; - - $decrypt = $init_decrypt . ' - $_plaintext = ""; - $_text = str_pad($_text, strlen($_text) + ('.$block_size.' - strlen($_text) % '.$block_size.') % '.$block_size.', chr(0)); - $_ciphertext_len = strlen($_text); - - for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { - $in = substr($_text, $_i, '.$block_size.'); - '.$decrypt_block.' - $_plaintext.= $in; - } - - return $self->_unpad($_plaintext); - '; - break; - case self::MODE_CTR: - $encrypt = $init_encrypt . ' - $_ciphertext = ""; - $_plaintext_len = strlen($_text); - $_xor = $self->encryptIV; - $_buffer = &$self->enbuffer; - if (strlen($_buffer["ciphertext"])) { - for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { - $_block = substr($_text, $_i, '.$block_size.'); - if (strlen($_block) > strlen($_buffer["ciphertext"])) { - $in = $_xor; - '.$encrypt_block.' - $self->_increment_str($_xor); - $_buffer["ciphertext"].= $in; - } - $_key = $self->_string_shift($_buffer["ciphertext"], '.$block_size.'); - $_ciphertext.= $_block ^ $_key; - } - } else { - for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { - $_block = substr($_text, $_i, '.$block_size.'); - $in = $_xor; - '.$encrypt_block.' - $self->_increment_str($_xor); - $_key = $in; - $_ciphertext.= $_block ^ $_key; - } - } - if ($self->continuousBuffer) { - $self->encryptIV = $_xor; - if ($_start = $_plaintext_len % '.$block_size.') { - $_buffer["ciphertext"] = substr($_key, $_start) . $_buffer["ciphertext"]; - } - } - - return $_ciphertext; - '; - - $decrypt = $init_encrypt . ' - $_plaintext = ""; - $_ciphertext_len = strlen($_text); - $_xor = $self->decryptIV; - $_buffer = &$self->debuffer; - - if (strlen($_buffer["ciphertext"])) { - for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { - $_block = substr($_text, $_i, '.$block_size.'); - if (strlen($_block) > strlen($_buffer["ciphertext"])) { - $in = $_xor; - '.$encrypt_block.' - $self->_increment_str($_xor); - $_buffer["ciphertext"].= $in; - } - $_key = $self->_string_shift($_buffer["ciphertext"], '.$block_size.'); - $_plaintext.= $_block ^ $_key; - } - } else { - for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { - $_block = substr($_text, $_i, '.$block_size.'); - $in = $_xor; - '.$encrypt_block.' - $self->_increment_str($_xor); - $_key = $in; - $_plaintext.= $_block ^ $_key; - } - } - if ($self->continuousBuffer) { - $self->decryptIV = $_xor; - if ($_start = $_ciphertext_len % '.$block_size.') { - $_buffer["ciphertext"] = substr($_key, $_start) . $_buffer["ciphertext"]; - } - } - - return $_plaintext; - '; - break; - case self::MODE_CFB: - $encrypt = $init_encrypt . ' - $_ciphertext = ""; - $_buffer = &$self->enbuffer; - - if ($self->continuousBuffer) { - $_iv = &$self->encryptIV; - $_pos = &$_buffer["pos"]; - } else { - $_iv = $self->encryptIV; - $_pos = 0; - } - $_len = strlen($_text); - $_i = 0; - if ($_pos) { - $_orig_pos = $_pos; - $_max = '.$block_size.' - $_pos; - if ($_len >= $_max) { - $_i = $_max; - $_len-= $_max; - $_pos = 0; - } else { - $_i = $_len; - $_pos+= $_len; - $_len = 0; - } - $_ciphertext = substr($_iv, $_orig_pos) ^ $_text; - $_iv = substr_replace($_iv, $_ciphertext, $_orig_pos, $_i); - } - while ($_len >= '.$block_size.') { - $in = $_iv; - '.$encrypt_block.'; - $_iv = $in ^ substr($_text, $_i, '.$block_size.'); - $_ciphertext.= $_iv; - $_len-= '.$block_size.'; - $_i+= '.$block_size.'; - } - if ($_len) { - $in = $_iv; - '.$encrypt_block.' - $_iv = $in; - $_block = $_iv ^ substr($_text, $_i); - $_iv = substr_replace($_iv, $_block, 0, $_len); - $_ciphertext.= $_block; - $_pos = $_len; - } - return $_ciphertext; - '; - - $decrypt = $init_encrypt . ' - $_plaintext = ""; - $_buffer = &$self->debuffer; - - if ($self->continuousBuffer) { - $_iv = &$self->decryptIV; - $_pos = &$_buffer["pos"]; - } else { - $_iv = $self->decryptIV; - $_pos = 0; - } - $_len = strlen($_text); - $_i = 0; - if ($_pos) { - $_orig_pos = $_pos; - $_max = '.$block_size.' - $_pos; - if ($_len >= $_max) { - $_i = $_max; - $_len-= $_max; - $_pos = 0; - } else { - $_i = $_len; - $_pos+= $_len; - $_len = 0; - } - $_plaintext = substr($_iv, $_orig_pos) ^ $_text; - $_iv = substr_replace($_iv, substr($_text, 0, $_i), $_orig_pos, $_i); - } - while ($_len >= '.$block_size.') { - $in = $_iv; - '.$encrypt_block.' - $_iv = $in; - $cb = substr($_text, $_i, '.$block_size.'); - $_plaintext.= $_iv ^ $cb; - $_iv = $cb; - $_len-= '.$block_size.'; - $_i+= '.$block_size.'; - } - if ($_len) { - $in = $_iv; - '.$encrypt_block.' - $_iv = $in; - $_plaintext.= $_iv ^ substr($_text, $_i); - $_iv = substr_replace($_iv, substr($_text, $_i), 0, $_len); - $_pos = $_len; - } - - return $_plaintext; - '; - break; - case self::MODE_OFB: - $encrypt = $init_encrypt . ' - $_ciphertext = ""; - $_plaintext_len = strlen($_text); - $_xor = $self->encryptIV; - $_buffer = &$self->enbuffer; - - if (strlen($_buffer["xor"])) { - for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { - $_block = substr($_text, $_i, '.$block_size.'); - if (strlen($_block) > strlen($_buffer["xor"])) { - $in = $_xor; - '.$encrypt_block.' - $_xor = $in; - $_buffer["xor"].= $_xor; - } - $_key = $self->_string_shift($_buffer["xor"], '.$block_size.'); - $_ciphertext.= $_block ^ $_key; - } - } else { - for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { - $in = $_xor; - '.$encrypt_block.' - $_xor = $in; - $_ciphertext.= substr($_text, $_i, '.$block_size.') ^ $_xor; - } - $_key = $_xor; - } - if ($self->continuousBuffer) { - $self->encryptIV = $_xor; - if ($_start = $_plaintext_len % '.$block_size.') { - $_buffer["xor"] = substr($_key, $_start) . $_buffer["xor"]; - } - } - return $_ciphertext; - '; - - $decrypt = $init_encrypt . ' - $_plaintext = ""; - $_ciphertext_len = strlen($_text); - $_xor = $self->decryptIV; - $_buffer = &$self->debuffer; - - if (strlen($_buffer["xor"])) { - for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { - $_block = substr($_text, $_i, '.$block_size.'); - if (strlen($_block) > strlen($_buffer["xor"])) { - $in = $_xor; - '.$encrypt_block.' - $_xor = $in; - $_buffer["xor"].= $_xor; - } - $_key = $self->_string_shift($_buffer["xor"], '.$block_size.'); - $_plaintext.= $_block ^ $_key; - } - } else { - for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { - $in = $_xor; - '.$encrypt_block.' - $_xor = $in; - $_plaintext.= substr($_text, $_i, '.$block_size.') ^ $_xor; - } - $_key = $_xor; - } - if ($self->continuousBuffer) { - $self->decryptIV = $_xor; - if ($_start = $_ciphertext_len % '.$block_size.') { - $_buffer["xor"] = substr($_key, $_start) . $_buffer["xor"]; - } - } - return $_plaintext; - '; - break; - case self::MODE_STREAM: - $encrypt = $init_encrypt . ' - $_ciphertext = ""; - '.$encrypt_block.' - return $_ciphertext; - '; - $decrypt = $init_decrypt . ' - $_plaintext = ""; - '.$decrypt_block.' - return $_plaintext; - '; - break; - // case self::MODE_CBC: - default: - $encrypt = $init_encrypt . ' - $_ciphertext = ""; - $_plaintext_len = strlen($_text); - - $in = $self->encryptIV; - - for ($_i = 0; $_i < $_plaintext_len; $_i+= '.$block_size.') { - $in = substr($_text, $_i, '.$block_size.') ^ $in; - '.$encrypt_block.' - $_ciphertext.= $in; - } - - if ($self->continuousBuffer) { - $self->encryptIV = $in; - } - - return $_ciphertext; - '; - - $decrypt = $init_decrypt . ' - $_plaintext = ""; - $_text = str_pad($_text, strlen($_text) + ('.$block_size.' - strlen($_text) % '.$block_size.') % '.$block_size.', chr(0)); - $_ciphertext_len = strlen($_text); - - $_iv = $self->decryptIV; - - for ($_i = 0; $_i < $_ciphertext_len; $_i+= '.$block_size.') { - $in = $_block = substr($_text, $_i, '.$block_size.'); - '.$decrypt_block.' - $_plaintext.= $in ^ $_iv; - $_iv = $_block; - } - - if ($self->continuousBuffer) { - $self->decryptIV = $_iv; - } - - return $self->_unpad($_plaintext); - '; - break; - } - - // Create the $inline function and return its name as string. Ready to run! - return create_function('$_action, &$self, $_text', $init_crypt . 'if ($_action == "encrypt") { ' . $encrypt . ' } else { ' . $decrypt . ' }'); - } - - /** - * Holds the lambda_functions table (classwide) - * - * Each name of the lambda function, created from - * _setupInlineCrypt() && _createInlineCryptFunction() - * is stored, classwide (!), here for reusing. - * - * The string-based index of $function is a classwide - * uniqe value representing, at least, the $mode of - * operation (or more... depends of the optimizing level) - * for which $mode the lambda function was created. - * - * @access private - * @return array &$functions - */ - function &_getLambdaFunctions() - { - static $functions = array(); - return $functions; - } - - /** - * Generates a digest from $bytes - * - * @see self::_setupInlineCrypt() - * @access private - * @param $bytes - * @return string - */ - function _hashInlineCryptFunction($bytes) - { - if (!isset(self::$WHIRLPOOL_AVAILABLE)) { - self::$WHIRLPOOL_AVAILABLE = extension_loaded('hash') && in_array('whirlpool', hash_algos()); - } - - $result = ''; - $hash = $bytes; - - switch (true) { - case self::$WHIRLPOOL_AVAILABLE: - foreach (str_split($bytes, 64) as $t) { - $hash = hash('whirlpool', $hash, true); - $result .= $t ^ $hash; - } - return $result . hash('whirlpool', $hash, true); - default: - $len = strlen($bytes); - for ($i = 0; $i < $len; $i+=20) { - $t = substr($bytes, $i, 20); - $hash = pack('H*', sha1($hash)); - $result .= $t ^ $hash; - } - return $result . pack('H*', sha1($hash)); - } - } -} diff --git a/libraries/phpseclib/Crypt/Random.php b/libraries/phpseclib/Crypt/Random.php deleted file mode 100644 index 586bd6c4d5..0000000000 --- a/libraries/phpseclib/Crypt/Random.php +++ /dev/null @@ -1,243 +0,0 @@ - - * - * - * - * @category Crypt - * @package Random - * @author Jim Wigginton - * @copyright 2007 Jim Wigginton - * @license http://www.opensource.org/licenses/mit-license.html MIT License - * @link http://phpseclib.sourceforge.net - */ - -namespace phpseclib\Crypt; - -use phpseclib\Crypt\AES; -use phpseclib\Crypt\Base; -use phpseclib\Crypt\Blowfish; -use phpseclib\Crypt\DES; -use phpseclib\Crypt\RC4; -use phpseclib\Crypt\TripleDES; -use phpseclib\Crypt\Twofish; - -/** - * Pure-PHP Random Number Generator - * - * @package Random - * @author Jim Wigginton - * @access public - */ -class Random -{ - /** - * Generate a random string. - * - * Although microoptimizations are generally discouraged as they impair readability this function is ripe with - * microoptimizations because this function has the potential of being called a huge number of times. - * eg. for RSA key generation. - * - * @param int $length - * @return string - */ - static function string($length) - { - if (version_compare(PHP_VERSION, '7.0.0', '>=')) { - try { - return \random_bytes($length); - } catch (\Throwable $e) { - // If a sufficient source of randomness is unavailable, random_bytes() will throw an - // object that implements the Throwable interface (Exception, TypeError, Error). - // We don't actually need to do anything here. The string() method should just continue - // as normal. Note, however, that if we don't have a sufficient source of randomness for - // random_bytes(), most of the other calls here will fail too, so we'll end up using - // the PHP implementation. - } - } - - if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - // method 1. prior to PHP 5.3 this would call rand() on windows hence the function_exists('class_alias') call. - // ie. class_alias is a function that was introduced in PHP 5.3 - if (extension_loaded('mcrypt') && function_exists('class_alias')) { - return mcrypt_create_iv($length); - } - // method 2. openssl_random_pseudo_bytes was introduced in PHP 5.3.0 but prior to PHP 5.3.4 there was, - // to quote , "possible blocking behavior". as of 5.3.4 - // openssl_random_pseudo_bytes and mcrypt_create_iv do the exact same thing on Windows. ie. they both - // call php_win32_get_random_bytes(): - // - // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/openssl/openssl.c#L5008 - // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/mcrypt/mcrypt.c#L1392 - // - // php_win32_get_random_bytes() is defined thusly: - // - // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/win32/winutil.c#L80 - // - // we're calling it, all the same, in the off chance that the mcrypt extension is not available - if (extension_loaded('openssl') && version_compare(PHP_VERSION, '5.3.4', '>=')) { - return openssl_random_pseudo_bytes($length); - } - } else { - // method 1. the fastest - if (extension_loaded('openssl')) { - return openssl_random_pseudo_bytes($length); - } - // method 2 - static $fp = true; - if ($fp === true) { - // warning's will be output unles the error suppression operator is used. errors such as - // "open_basedir restriction in effect", "Permission denied", "No such file or directory", etc. - $fp = @fopen('/dev/urandom', 'rb'); - } - if ($fp !== true && $fp !== false) { // surprisingly faster than !is_bool() or is_resource() - return fread($fp, $length); - } - // method 3. pretty much does the same thing as method 2 per the following url: - // https://github.com/php/php-src/blob/7014a0eb6d1611151a286c0ff4f2238f92c120d6/ext/mcrypt/mcrypt.c#L1391 - // surprisingly slower than method 2. maybe that's because mcrypt_create_iv does a bunch of error checking that we're - // not doing. regardless, this'll only be called if this PHP script couldn't open /dev/urandom due to open_basedir - // restrictions or some such - if (extension_loaded('mcrypt')) { - return mcrypt_create_iv($length, MCRYPT_DEV_URANDOM); - } - } - // at this point we have no choice but to use a pure-PHP CSPRNG - - // cascade entropy across multiple PHP instances by fixing the session and collecting all - // environmental variables, including the previous session data and the current session - // data. - // - // mt_rand seeds itself by looking at the PID and the time, both of which are (relatively) - // easy to guess at. linux uses mouse clicks, keyboard timings, etc, as entropy sources, but - // PHP isn't low level to be able to use those as sources and on a web server there's not likely - // going to be a ton of keyboard or mouse action. web servers do have one thing that we can use - // however, a ton of people visiting the website. obviously you don't want to base your seeding - // soley on parameters a potential attacker sends but (1) not everything in $_SERVER is controlled - // by the user and (2) this isn't just looking at the data sent by the current user - it's based - // on the data sent by all users. one user requests the page and a hash of their info is saved. - // another user visits the page and the serialization of their data is utilized along with the - // server envirnment stuff and a hash of the previous http request data (which itself utilizes - // a hash of the session data before that). certainly an attacker should be assumed to have - // full control over his own http requests. he, however, is not going to have control over - // everyone's http requests. - static $crypto = false, $v; - if ($crypto === false) { - // save old session data - $old_session_id = session_id(); - $old_use_cookies = ini_get('session.use_cookies'); - $old_session_cache_limiter = session_cache_limiter(); - $_OLD_SESSION = isset($_SESSION) ? $_SESSION : false; - if ($old_session_id != '') { - session_write_close(); - } - - session_id(1); - ini_set('session.use_cookies', 0); - session_cache_limiter(''); - session_start(); - - $v = $seed = $_SESSION['seed'] = pack('H*', sha1( - serialize($_SERVER) . - serialize($_POST) . - serialize($_GET) . - serialize($_COOKIE) . - serialize($GLOBALS) . - serialize($_SESSION) . - serialize($_OLD_SESSION) - )); - if (!isset($_SESSION['count'])) { - $_SESSION['count'] = 0; - } - $_SESSION['count']++; - - session_write_close(); - - // restore old session data - if ($old_session_id != '') { - session_id($old_session_id); - session_start(); - ini_set('session.use_cookies', $old_use_cookies); - session_cache_limiter($old_session_cache_limiter); - } else { - if ($_OLD_SESSION !== false) { - $_SESSION = $_OLD_SESSION; - unset($_OLD_SESSION); - } else { - unset($_SESSION); - } - } - - // in SSH2 a shared secret and an exchange hash are generated through the key exchange process. - // the IV client to server is the hash of that "nonce" with the letter A and for the encryption key it's the letter C. - // if the hash doesn't produce enough a key or an IV that's long enough concat successive hashes of the - // original hash and the current hash. we'll be emulating that. for more info see the following URL: - // - // http://tools.ietf.org/html/rfc4253#section-7.2 - // - // see the is_string($crypto) part for an example of how to expand the keys - $key = pack('H*', sha1($seed . 'A')); - $iv = pack('H*', sha1($seed . 'C')); - - // ciphers are used as per the nist.gov link below. also, see this link: - // - // http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator#Designs_based_on_cryptographic_primitives - switch (true) { - case class_exists('\phpseclib\Crypt\AES'): - $crypto = new AES(Base::MODE_CTR); - break; - case class_exists('\phpseclib\Crypt\Twofish'): - $crypto = new Twofish(Base::MODE_CTR); - break; - case class_exists('\phpseclib\Crypt\Blowfish'): - $crypto = new Blowfish(Base::MODE_CTR); - break; - case class_exists('\phpseclib\Crypt\TripleDES'): - $crypto = new TripleDES(Base::MODE_CTR); - break; - case class_exists('\phpseclib\Crypt\DES'): - $crypto = new DES(Base::MODE_CTR); - break; - case class_exists('\phpseclib\Crypt\RC4'): - $crypto = new RC4(); - break; - default: - user_error(__CLASS__ . ' requires at least one symmetric cipher be loaded'); - return false; - } - - $crypto->setKey($key); - $crypto->setIV($iv); - $crypto->enableContinuousBuffer(); - } - - //return $crypto->encrypt(str_repeat("\0", $length)); - - // the following is based off of ANSI X9.31: - // - // http://csrc.nist.gov/groups/STM/cavp/documents/rng/931rngext.pdf - // - // OpenSSL uses that same standard for it's random numbers: - // - // http://www.opensource.apple.com/source/OpenSSL/OpenSSL-38/openssl/fips-1.0/rand/fips_rand.c - // (do a search for "ANS X9.31 A.2.4") - $result = ''; - while (strlen($result) < $length) { - $i = $crypto->encrypt(microtime()); // strlen(microtime()) == 21 - $r = $crypto->encrypt($i ^ $v); // strlen($v) == 20 - $v = $crypto->encrypt($r ^ $i); // strlen($r) == 20 - $result.= $r; - } - return substr($result, 0, $length); - } -} diff --git a/libraries/phpseclib/Crypt/Rijndael.php b/libraries/phpseclib/Crypt/Rijndael.php deleted file mode 100644 index 05bfc98259..0000000000 --- a/libraries/phpseclib/Crypt/Rijndael.php +++ /dev/null @@ -1,941 +0,0 @@ - - * setKey('abcdefghijklmnop'); - * - * $size = 10 * 1024; - * $plaintext = ''; - * for ($i = 0; $i < $size; $i++) { - * $plaintext.= 'a'; - * } - * - * echo $rijndael->decrypt($rijndael->encrypt($plaintext)); - * ?> - * - * - * @category Crypt - * @package Rijndael - * @author Jim Wigginton - * @copyright 2008 Jim Wigginton - * @license http://www.opensource.org/licenses/mit-license.html MIT License - * @link http://phpseclib.sourceforge.net - */ -namespace phpseclib\Crypt; - -if (! defined('PHPMYADMIN')) { - exit; -} - -use phpseclib\Crypt\Base; - -/** - * Pure-PHP implementation of Rijndael. - * - * @package Rijndael - * @author Jim Wigginton - * @access public - */ -class Rijndael extends Base -{ - /** - * The mcrypt specific name of the cipher - * - * Mcrypt is useable for 128/192/256-bit $block_size/$key_length. For 160/224 not. - * \phpseclib\Crypt\Rijndael determines automatically whether mcrypt is useable - * or not for the current $block_size/$key_length. - * In case of, $cipher_name_mcrypt will be set dynamically at run time accordingly. - * - * @see \phpseclib\Crypt\Base::cipher_name_mcrypt - * @see \phpseclib\Crypt\Base::engine - * @see self::isValidEngine() - * @var string - * @access private - */ - var $cipher_name_mcrypt = 'rijndael-128'; - - /** - * The default salt used by setPassword() - * - * @see \phpseclib\Crypt\Base::password_default_salt - * @see \phpseclib\Crypt\Base::setPassword() - * @var string - * @access private - */ - var $password_default_salt = 'phpseclib'; - - /** - * The Key Schedule - * - * @see self::_setup() - * @var array - * @access private - */ - var $w; - - /** - * The Inverse Key Schedule - * - * @see self::_setup() - * @var array - * @access private - */ - var $dw; - - /** - * The Block Length divided by 32 - * - * @see self::setBlockLength() - * @var int - * @access private - * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4. Exists in conjunction with $block_size - * because the encryption / decryption / key schedule creation requires this number and not $block_size. We could - * derive this from $block_size or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu - * of that, we'll just precompute it once. - */ - var $Nb = 4; - - /** - * The Key Length (in bytes) - * - * @see self::setKeyLength() - * @var int - * @access private - * @internal The max value is 256 / 8 = 32, the min value is 128 / 8 = 16. Exists in conjunction with $Nk - * because the encryption / decryption / key schedule creation requires this number and not $key_length. We could - * derive this from $key_length or vice versa, but that'd mean we'd have to do multiple shift operations, so in lieu - * of that, we'll just precompute it once. - */ - var $key_length = 16; - - /** - * The Key Length divided by 32 - * - * @see self::setKeyLength() - * @var int - * @access private - * @internal The max value is 256 / 32 = 8, the min value is 128 / 32 = 4 - */ - var $Nk = 4; - - /** - * The Number of Rounds - * - * @var int - * @access private - * @internal The max value is 14, the min value is 10. - */ - var $Nr; - - /** - * Shift offsets - * - * @var array - * @access private - */ - var $c; - - /** - * Holds the last used key- and block_size information - * - * @var array - * @access private - */ - var $kl; - - /** - * Sets the key length. - * - * Valid key lengths are 128, 160, 192, 224, and 256. If the length is less than 128, it will be rounded up to - * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. - * - * Note: phpseclib extends Rijndael (and AES) for using 160- and 224-bit keys but they are officially not defined - * and the most (if not all) implementations are not able using 160/224-bit keys but round/pad them up to - * 192/256 bits as, for example, mcrypt will do. - * - * That said, if you want be compatible with other Rijndael and AES implementations, - * you should not setKeyLength(160) or setKeyLength(224). - * - * Additional: In case of 160- and 224-bit keys, phpseclib will/can, for that reason, not use - * the mcrypt php extension, even if available. - * This results then in slower encryption. - * - * @access public - * @param int $length - */ - function setKeyLength($length) - { - switch (true) { - case $length <= 128: - $this->key_length = 16; - break; - case $length <= 160: - $this->key_length = 20; - break; - case $length <= 192: - $this->key_length = 24; - break; - case $length <= 224: - $this->key_length = 28; - break; - default: - $this->key_length = 32; - } - - parent::setKeyLength($length); - } - - /** - * Sets the block length - * - * Valid block lengths are 128, 160, 192, 224, and 256. If the length is less than 128, it will be rounded up to - * 128. If the length is greater than 128 and invalid, it will be rounded down to the closest valid amount. - * - * @access public - * @param int $length - */ - function setBlockLength($length) - { - $length >>= 5; - if ($length > 8) { - $length = 8; - } elseif ($length < 4) { - $length = 4; - } - $this->Nb = $length; - $this->block_size = $length << 2; - $this->changed = true; - $this->_setEngine(); - } - - /** - * Test for engine validity - * - * This is mainly just a wrapper to set things up for \phpseclib\Crypt\Base::isValidEngine() - * - * @see \phpseclib\Crypt\Base::__construct() - * @param int $engine - * @access public - * @return bool - */ - function isValidEngine($engine) - { - switch ($engine) { - case self::ENGINE_OPENSSL: - if ($this->block_size != 16) { - return false; - } - $this->cipher_name_openssl_ecb = 'aes-' . ($this->key_length << 3) . '-ecb'; - $this->cipher_name_openssl = 'aes-' . ($this->key_length << 3) . '-' . $this->_openssl_translate_mode(); - break; - case self::ENGINE_MCRYPT: - $this->cipher_name_mcrypt = 'rijndael-' . ($this->block_size << 3); - if ($this->key_length % 8) { // is it a 160/224-bit key? - // mcrypt is not usable for them, only for 128/192/256-bit keys - return false; - } - } - - return parent::isValidEngine($engine); - } - - /** - * Encrypts a block - * - * @access private - * @param string $in - * @return string - */ - function _encryptBlock($in) - { - static $tables; - if (empty($tables)) { - $tables = &$this->_getTables(); - } - $t0 = $tables[0]; - $t1 = $tables[1]; - $t2 = $tables[2]; - $t3 = $tables[3]; - $sbox = $tables[4]; - - $state = array(); - $words = unpack('N*', $in); - - $c = $this->c; - $w = $this->w; - $Nb = $this->Nb; - $Nr = $this->Nr; - - // addRoundKey - $wc = $Nb - 1; - foreach ($words as $word) { - $state[] = $word ^ $w[++$wc]; - } - - // fips-197.pdf#page=19, "Figure 5. Pseudo Code for the Cipher", states that this loop has four components - - // subBytes, shiftRows, mixColumns, and addRoundKey. fips-197.pdf#page=30, "Implementation Suggestions Regarding - // Various Platforms" suggests that performs enhanced implementations are described in Rijndael-ammended.pdf. - // Rijndael-ammended.pdf#page=20, "Implementation aspects / 32-bit processor", discusses such an optimization. - // Unfortunately, the description given there is not quite correct. Per aes.spec.v316.pdf#page=19 [1], - // equation (7.4.7) is supposed to use addition instead of subtraction, so we'll do that here, as well. - - // [1] http://fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.v316.pdf - $temp = array(); - for ($round = 1; $round < $Nr; ++$round) { - $i = 0; // $c[0] == 0 - $j = $c[1]; - $k = $c[2]; - $l = $c[3]; - - while ($i < $Nb) { - $temp[$i] = $t0[$state[$i] >> 24 & 0x000000FF] ^ - $t1[$state[$j] >> 16 & 0x000000FF] ^ - $t2[$state[$k] >> 8 & 0x000000FF] ^ - $t3[$state[$l] & 0x000000FF] ^ - $w[++$wc]; - ++$i; - $j = ($j + 1) % $Nb; - $k = ($k + 1) % $Nb; - $l = ($l + 1) % $Nb; - } - $state = $temp; - } - - // subWord - for ($i = 0; $i < $Nb; ++$i) { - $state[$i] = $sbox[$state[$i] & 0x000000FF] | - ($sbox[$state[$i] >> 8 & 0x000000FF] << 8) | - ($sbox[$state[$i] >> 16 & 0x000000FF] << 16) | - ($sbox[$state[$i] >> 24 & 0x000000FF] << 24); - } - - // shiftRows + addRoundKey - $i = 0; // $c[0] == 0 - $j = $c[1]; - $k = $c[2]; - $l = $c[3]; - while ($i < $Nb) { - $temp[$i] = ($state[$i] & 0xFF000000) ^ - ($state[$j] & 0x00FF0000) ^ - ($state[$k] & 0x0000FF00) ^ - ($state[$l] & 0x000000FF) ^ - $w[$i]; - ++$i; - $j = ($j + 1) % $Nb; - $k = ($k + 1) % $Nb; - $l = ($l + 1) % $Nb; - } - - switch ($Nb) { - case 8: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6], $temp[7]); - case 7: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6]); - case 6: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5]); - case 5: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4]); - default: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3]); - } - } - - /** - * Decrypts a block - * - * @access private - * @param string $in - * @return string - */ - function _decryptBlock($in) - { - static $invtables; - if (empty($invtables)) { - $invtables = &$this->_getInvTables(); - } - $dt0 = $invtables[0]; - $dt1 = $invtables[1]; - $dt2 = $invtables[2]; - $dt3 = $invtables[3]; - $isbox = $invtables[4]; - - $state = array(); - $words = unpack('N*', $in); - - $c = $this->c; - $dw = $this->dw; - $Nb = $this->Nb; - $Nr = $this->Nr; - - // addRoundKey - $wc = $Nb - 1; - foreach ($words as $word) { - $state[] = $word ^ $dw[++$wc]; - } - - $temp = array(); - for ($round = $Nr - 1; $round > 0; --$round) { - $i = 0; // $c[0] == 0 - $j = $Nb - $c[1]; - $k = $Nb - $c[2]; - $l = $Nb - $c[3]; - - while ($i < $Nb) { - $temp[$i] = $dt0[$state[$i] >> 24 & 0x000000FF] ^ - $dt1[$state[$j] >> 16 & 0x000000FF] ^ - $dt2[$state[$k] >> 8 & 0x000000FF] ^ - $dt3[$state[$l] & 0x000000FF] ^ - $dw[++$wc]; - ++$i; - $j = ($j + 1) % $Nb; - $k = ($k + 1) % $Nb; - $l = ($l + 1) % $Nb; - } - $state = $temp; - } - - // invShiftRows + invSubWord + addRoundKey - $i = 0; // $c[0] == 0 - $j = $Nb - $c[1]; - $k = $Nb - $c[2]; - $l = $Nb - $c[3]; - - while ($i < $Nb) { - $word = ($state[$i] & 0xFF000000) | - ($state[$j] & 0x00FF0000) | - ($state[$k] & 0x0000FF00) | - ($state[$l] & 0x000000FF); - - $temp[$i] = $dw[$i] ^ ($isbox[$word & 0x000000FF] | - ($isbox[$word >> 8 & 0x000000FF] << 8) | - ($isbox[$word >> 16 & 0x000000FF] << 16) | - ($isbox[$word >> 24 & 0x000000FF] << 24)); - ++$i; - $j = ($j + 1) % $Nb; - $k = ($k + 1) % $Nb; - $l = ($l + 1) % $Nb; - } - - switch ($Nb) { - case 8: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6], $temp[7]); - case 7: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5], $temp[6]); - case 6: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4], $temp[5]); - case 5: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3], $temp[4]); - default: - return pack('N*', $temp[0], $temp[1], $temp[2], $temp[3]); - } - } - - /** - * Setup the key (expansion) - * - * @see \phpseclib\Crypt\Base::_setupKey() - * @access private - */ - function _setupKey() - { - // Each number in $rcon is equal to the previous number multiplied by two in Rijndael's finite field. - // See http://en.wikipedia.org/wiki/Finite_field_arithmetic#Multiplicative_inverse - static $rcon = array(0, - 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, - 0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000, - 0x6C000000, 0xD8000000, 0xAB000000, 0x4D000000, 0x9A000000, - 0x2F000000, 0x5E000000, 0xBC000000, 0x63000000, 0xC6000000, - 0x97000000, 0x35000000, 0x6A000000, 0xD4000000, 0xB3000000, - 0x7D000000, 0xFA000000, 0xEF000000, 0xC5000000, 0x91000000 - ); - - if (isset($this->kl['key']) && $this->key === $this->kl['key'] && $this->key_length === $this->kl['key_length'] && $this->block_size === $this->kl['block_size']) { - // already expanded - return; - } - $this->kl = array('key' => $this->key, 'key_length' => $this->key_length, 'block_size' => $this->block_size); - - $this->Nk = $this->key_length >> 2; - // see Rijndael-ammended.pdf#page=44 - $this->Nr = max($this->Nk, $this->Nb) + 6; - - // shift offsets for Nb = 5, 7 are defined in Rijndael-ammended.pdf#page=44, - // "Table 8: Shift offsets in Shiftrow for the alternative block lengths" - // shift offsets for Nb = 4, 6, 8 are defined in Rijndael-ammended.pdf#page=14, - // "Table 2: Shift offsets for different block lengths" - switch ($this->Nb) { - case 4: - case 5: - case 6: - $this->c = array(0, 1, 2, 3); - break; - case 7: - $this->c = array(0, 1, 2, 4); - break; - case 8: - $this->c = array(0, 1, 3, 4); - } - - $w = array_values(unpack('N*words', $this->key)); - - $length = $this->Nb * ($this->Nr + 1); - for ($i = $this->Nk; $i < $length; $i++) { - $temp = $w[$i - 1]; - if ($i % $this->Nk == 0) { - // according to , "the size of an integer is platform-dependent". - // on a 32-bit machine, it's 32-bits, and on a 64-bit machine, it's 64-bits. on a 32-bit machine, - // 0xFFFFFFFF << 8 == 0xFFFFFF00, but on a 64-bit machine, it equals 0xFFFFFFFF00. as such, doing 'and' - // with 0xFFFFFFFF (or 0xFFFFFF00) on a 32-bit machine is unnecessary, but on a 64-bit machine, it is. - $temp = (($temp << 8) & 0xFFFFFF00) | (($temp >> 24) & 0x000000FF); // rotWord - $temp = $this->_subWord($temp) ^ $rcon[$i / $this->Nk]; - } elseif ($this->Nk > 6 && $i % $this->Nk == 4) { - $temp = $this->_subWord($temp); - } - $w[$i] = $w[$i - $this->Nk] ^ $temp; - } - - // convert the key schedule from a vector of $Nb * ($Nr + 1) length to a matrix with $Nr + 1 rows and $Nb columns - // and generate the inverse key schedule. more specifically, - // according to (section 5.3.3), - // "The key expansion for the Inverse Cipher is defined as follows: - // 1. Apply the Key Expansion. - // 2. Apply InvMixColumn to all Round Keys except the first and the last one." - // also, see fips-197.pdf#page=27, "5.3.5 Equivalent Inverse Cipher" - list($dt0, $dt1, $dt2, $dt3) = $this->_getInvTables(); - $temp = $this->w = $this->dw = array(); - for ($i = $row = $col = 0; $i < $length; $i++, $col++) { - if ($col == $this->Nb) { - if ($row == 0) { - $this->dw[0] = $this->w[0]; - } else { - // subWord + invMixColumn + invSubWord = invMixColumn - $j = 0; - while ($j < $this->Nb) { - $dw = $this->_subWord($this->w[$row][$j]); - $temp[$j] = $dt0[$dw >> 24 & 0x000000FF] ^ - $dt1[$dw >> 16 & 0x000000FF] ^ - $dt2[$dw >> 8 & 0x000000FF] ^ - $dt3[$dw & 0x000000FF]; - $j++; - } - $this->dw[$row] = $temp; - } - - $col = 0; - $row++; - } - $this->w[$row][$col] = $w[$i]; - } - - $this->dw[$row] = $this->w[$row]; - - // Converting to 1-dim key arrays (both ascending) - $this->dw = array_reverse($this->dw); - $w = array_pop($this->w); - $dw = array_pop($this->dw); - foreach ($this->w as $r => $wr) { - foreach ($wr as $c => $wc) { - $w[] = $wc; - $dw[] = $this->dw[$r][$c]; - } - } - $this->w = $w; - $this->dw = $dw; - } - - /** - * Performs S-Box substitutions - * - * @access private - * @param int $word - */ - function _subWord($word) - { - static $sbox; - if (empty($sbox)) { - list(, , , , $sbox) = $this->_getTables(); - } - - return $sbox[$word & 0x000000FF] | - ($sbox[$word >> 8 & 0x000000FF] << 8) | - ($sbox[$word >> 16 & 0x000000FF] << 16) | - ($sbox[$word >> 24 & 0x000000FF] << 24); - } - - /** - * Provides the mixColumns and sboxes tables - * - * @see self::_encryptBlock() - * @see self::_setupInlineCrypt() - * @see self::_subWord() - * @access private - * @return array &$tables - */ - function &_getTables() - { - static $tables; - if (empty($tables)) { - // according to (section 5.2.1), - // precomputed tables can be used in the mixColumns phase. in that example, they're assigned t0...t3, so - // those are the names we'll use. - $t3 = array_map('intval', array( - // with array_map('intval', ...) we ensure we have only int's and not - // some slower floats converted by php automatically on high values - 0x6363A5C6, 0x7C7C84F8, 0x777799EE, 0x7B7B8DF6, 0xF2F20DFF, 0x6B6BBDD6, 0x6F6FB1DE, 0xC5C55491, - 0x30305060, 0x01010302, 0x6767A9CE, 0x2B2B7D56, 0xFEFE19E7, 0xD7D762B5, 0xABABE64D, 0x76769AEC, - 0xCACA458F, 0x82829D1F, 0xC9C94089, 0x7D7D87FA, 0xFAFA15EF, 0x5959EBB2, 0x4747C98E, 0xF0F00BFB, - 0xADADEC41, 0xD4D467B3, 0xA2A2FD5F, 0xAFAFEA45, 0x9C9CBF23, 0xA4A4F753, 0x727296E4, 0xC0C05B9B, - 0xB7B7C275, 0xFDFD1CE1, 0x9393AE3D, 0x26266A4C, 0x36365A6C, 0x3F3F417E, 0xF7F702F5, 0xCCCC4F83, - 0x34345C68, 0xA5A5F451, 0xE5E534D1, 0xF1F108F9, 0x717193E2, 0xD8D873AB, 0x31315362, 0x15153F2A, - 0x04040C08, 0xC7C75295, 0x23236546, 0xC3C35E9D, 0x18182830, 0x9696A137, 0x05050F0A, 0x9A9AB52F, - 0x0707090E, 0x12123624, 0x80809B1B, 0xE2E23DDF, 0xEBEB26CD, 0x2727694E, 0xB2B2CD7F, 0x75759FEA, - 0x09091B12, 0x83839E1D, 0x2C2C7458, 0x1A1A2E34, 0x1B1B2D36, 0x6E6EB2DC, 0x5A5AEEB4, 0xA0A0FB5B, - 0x5252F6A4, 0x3B3B4D76, 0xD6D661B7, 0xB3B3CE7D, 0x29297B52, 0xE3E33EDD, 0x2F2F715E, 0x84849713, - 0x5353F5A6, 0xD1D168B9, 0x00000000, 0xEDED2CC1, 0x20206040, 0xFCFC1FE3, 0xB1B1C879, 0x5B5BEDB6, - 0x6A6ABED4, 0xCBCB468D, 0xBEBED967, 0x39394B72, 0x4A4ADE94, 0x4C4CD498, 0x5858E8B0, 0xCFCF4A85, - 0xD0D06BBB, 0xEFEF2AC5, 0xAAAAE54F, 0xFBFB16ED, 0x4343C586, 0x4D4DD79A, 0x33335566, 0x85859411, - 0x4545CF8A, 0xF9F910E9, 0x02020604, 0x7F7F81FE, 0x5050F0A0, 0x3C3C4478, 0x9F9FBA25, 0xA8A8E34B, - 0x5151F3A2, 0xA3A3FE5D, 0x4040C080, 0x8F8F8A05, 0x9292AD3F, 0x9D9DBC21, 0x38384870, 0xF5F504F1, - 0xBCBCDF63, 0xB6B6C177, 0xDADA75AF, 0x21216342, 0x10103020, 0xFFFF1AE5, 0xF3F30EFD, 0xD2D26DBF, - 0xCDCD4C81, 0x0C0C1418, 0x13133526, 0xECEC2FC3, 0x5F5FE1BE, 0x9797A235, 0x4444CC88, 0x1717392E, - 0xC4C45793, 0xA7A7F255, 0x7E7E82FC, 0x3D3D477A, 0x6464ACC8, 0x5D5DE7BA, 0x19192B32, 0x737395E6, - 0x6060A0C0, 0x81819819, 0x4F4FD19E, 0xDCDC7FA3, 0x22226644, 0x2A2A7E54, 0x9090AB3B, 0x8888830B, - 0x4646CA8C, 0xEEEE29C7, 0xB8B8D36B, 0x14143C28, 0xDEDE79A7, 0x5E5EE2BC, 0x0B0B1D16, 0xDBDB76AD, - 0xE0E03BDB, 0x32325664, 0x3A3A4E74, 0x0A0A1E14, 0x4949DB92, 0x06060A0C, 0x24246C48, 0x5C5CE4B8, - 0xC2C25D9F, 0xD3D36EBD, 0xACACEF43, 0x6262A6C4, 0x9191A839, 0x9595A431, 0xE4E437D3, 0x79798BF2, - 0xE7E732D5, 0xC8C8438B, 0x3737596E, 0x6D6DB7DA, 0x8D8D8C01, 0xD5D564B1, 0x4E4ED29C, 0xA9A9E049, - 0x6C6CB4D8, 0x5656FAAC, 0xF4F407F3, 0xEAEA25CF, 0x6565AFCA, 0x7A7A8EF4, 0xAEAEE947, 0x08081810, - 0xBABAD56F, 0x787888F0, 0x25256F4A, 0x2E2E725C, 0x1C1C2438, 0xA6A6F157, 0xB4B4C773, 0xC6C65197, - 0xE8E823CB, 0xDDDD7CA1, 0x74749CE8, 0x1F1F213E, 0x4B4BDD96, 0xBDBDDC61, 0x8B8B860D, 0x8A8A850F, - 0x707090E0, 0x3E3E427C, 0xB5B5C471, 0x6666AACC, 0x4848D890, 0x03030506, 0xF6F601F7, 0x0E0E121C, - 0x6161A3C2, 0x35355F6A, 0x5757F9AE, 0xB9B9D069, 0x86869117, 0xC1C15899, 0x1D1D273A, 0x9E9EB927, - 0xE1E138D9, 0xF8F813EB, 0x9898B32B, 0x11113322, 0x6969BBD2, 0xD9D970A9, 0x8E8E8907, 0x9494A733, - 0x9B9BB62D, 0x1E1E223C, 0x87879215, 0xE9E920C9, 0xCECE4987, 0x5555FFAA, 0x28287850, 0xDFDF7AA5, - 0x8C8C8F03, 0xA1A1F859, 0x89898009, 0x0D0D171A, 0xBFBFDA65, 0xE6E631D7, 0x4242C684, 0x6868B8D0, - 0x4141C382, 0x9999B029, 0x2D2D775A, 0x0F0F111E, 0xB0B0CB7B, 0x5454FCA8, 0xBBBBD66D, 0x16163A2C - )); - - foreach ($t3 as $t3i) { - $t0[] = (($t3i << 24) & 0xFF000000) | (($t3i >> 8) & 0x00FFFFFF); - $t1[] = (($t3i << 16) & 0xFFFF0000) | (($t3i >> 16) & 0x0000FFFF); - $t2[] = (($t3i << 8) & 0xFFFFFF00) | (($t3i >> 24) & 0x000000FF); - } - - $tables = array( - // The Precomputed mixColumns tables t0 - t3 - $t0, - $t1, - $t2, - $t3, - // The SubByte S-Box - array( - 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, - 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, - 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, - 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, - 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, - 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, - 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, - 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, - 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, - 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, - 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, - 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, - 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, - 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, - 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, - 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 - ) - ); - } - return $tables; - } - - /** - * Provides the inverse mixColumns and inverse sboxes tables - * - * @see self::_decryptBlock() - * @see self::_setupInlineCrypt() - * @see self::_setupKey() - * @access private - * @return array &$tables - */ - function &_getInvTables() - { - static $tables; - if (empty($tables)) { - $dt3 = array_map('intval', array( - 0xF4A75051, 0x4165537E, 0x17A4C31A, 0x275E963A, 0xAB6BCB3B, 0x9D45F11F, 0xFA58ABAC, 0xE303934B, - 0x30FA5520, 0x766DF6AD, 0xCC769188, 0x024C25F5, 0xE5D7FC4F, 0x2ACBD7C5, 0x35448026, 0x62A38FB5, - 0xB15A49DE, 0xBA1B6725, 0xEA0E9845, 0xFEC0E15D, 0x2F7502C3, 0x4CF01281, 0x4697A38D, 0xD3F9C66B, - 0x8F5FE703, 0x929C9515, 0x6D7AEBBF, 0x5259DA95, 0xBE832DD4, 0x7421D358, 0xE0692949, 0xC9C8448E, - 0xC2896A75, 0x8E7978F4, 0x583E6B99, 0xB971DD27, 0xE14FB6BE, 0x88AD17F0, 0x20AC66C9, 0xCE3AB47D, - 0xDF4A1863, 0x1A3182E5, 0x51336097, 0x537F4562, 0x6477E0B1, 0x6BAE84BB, 0x81A01CFE, 0x082B94F9, - 0x48685870, 0x45FD198F, 0xDE6C8794, 0x7BF8B752, 0x73D323AB, 0x4B02E272, 0x1F8F57E3, 0x55AB2A66, - 0xEB2807B2, 0xB5C2032F, 0xC57B9A86, 0x3708A5D3, 0x2887F230, 0xBFA5B223, 0x036ABA02, 0x16825CED, - 0xCF1C2B8A, 0x79B492A7, 0x07F2F0F3, 0x69E2A14E, 0xDAF4CD65, 0x05BED506, 0x34621FD1, 0xA6FE8AC4, - 0x2E539D34, 0xF355A0A2, 0x8AE13205, 0xF6EB75A4, 0x83EC390B, 0x60EFAA40, 0x719F065E, 0x6E1051BD, - 0x218AF93E, 0xDD063D96, 0x3E05AEDD, 0xE6BD464D, 0x548DB591, 0xC45D0571, 0x06D46F04, 0x5015FF60, - 0x98FB2419, 0xBDE997D6, 0x4043CC89, 0xD99E7767, 0xE842BDB0, 0x898B8807, 0x195B38E7, 0xC8EEDB79, - 0x7C0A47A1, 0x420FE97C, 0x841EC9F8, 0x00000000, 0x80868309, 0x2BED4832, 0x1170AC1E, 0x5A724E6C, - 0x0EFFFBFD, 0x8538560F, 0xAED51E3D, 0x2D392736, 0x0FD9640A, 0x5CA62168, 0x5B54D19B, 0x362E3A24, - 0x0A67B10C, 0x57E70F93, 0xEE96D2B4, 0x9B919E1B, 0xC0C54F80, 0xDC20A261, 0x774B695A, 0x121A161C, - 0x93BA0AE2, 0xA02AE5C0, 0x22E0433C, 0x1B171D12, 0x090D0B0E, 0x8BC7ADF2, 0xB6A8B92D, 0x1EA9C814, - 0xF1198557, 0x75074CAF, 0x99DDBBEE, 0x7F60FDA3, 0x01269FF7, 0x72F5BC5C, 0x663BC544, 0xFB7E345B, - 0x4329768B, 0x23C6DCCB, 0xEDFC68B6, 0xE4F163B8, 0x31DCCAD7, 0x63851042, 0x97224013, 0xC6112084, - 0x4A247D85, 0xBB3DF8D2, 0xF93211AE, 0x29A16DC7, 0x9E2F4B1D, 0xB230F3DC, 0x8652EC0D, 0xC1E3D077, - 0xB3166C2B, 0x70B999A9, 0x9448FA11, 0xE9642247, 0xFC8CC4A8, 0xF03F1AA0, 0x7D2CD856, 0x3390EF22, - 0x494EC787, 0x38D1C1D9, 0xCAA2FE8C, 0xD40B3698, 0xF581CFA6, 0x7ADE28A5, 0xB78E26DA, 0xADBFA43F, - 0x3A9DE42C, 0x78920D50, 0x5FCC9B6A, 0x7E466254, 0x8D13C2F6, 0xD8B8E890, 0x39F75E2E, 0xC3AFF582, - 0x5D80BE9F, 0xD0937C69, 0xD52DA96F, 0x2512B3CF, 0xAC993BC8, 0x187DA710, 0x9C636EE8, 0x3BBB7BDB, - 0x267809CD, 0x5918F46E, 0x9AB701EC, 0x4F9AA883, 0x956E65E6, 0xFFE67EAA, 0xBCCF0821, 0x15E8E6EF, - 0xE79BD9BA, 0x6F36CE4A, 0x9F09D4EA, 0xB07CD629, 0xA4B2AF31, 0x3F23312A, 0xA59430C6, 0xA266C035, - 0x4EBC3774, 0x82CAA6FC, 0x90D0B0E0, 0xA7D81533, 0x04984AF1, 0xECDAF741, 0xCD500E7F, 0x91F62F17, - 0x4DD68D76, 0xEFB04D43, 0xAA4D54CC, 0x9604DFE4, 0xD1B5E39E, 0x6A881B4C, 0x2C1FB8C1, 0x65517F46, - 0x5EEA049D, 0x8C355D01, 0x877473FA, 0x0B412EFB, 0x671D5AB3, 0xDBD25292, 0x105633E9, 0xD647136D, - 0xD7618C9A, 0xA10C7A37, 0xF8148E59, 0x133C89EB, 0xA927EECE, 0x61C935B7, 0x1CE5EDE1, 0x47B13C7A, - 0xD2DF599C, 0xF2733F55, 0x14CE7918, 0xC737BF73, 0xF7CDEA53, 0xFDAA5B5F, 0x3D6F14DF, 0x44DB8678, - 0xAFF381CA, 0x68C43EB9, 0x24342C38, 0xA3405FC2, 0x1DC37216, 0xE2250CBC, 0x3C498B28, 0x0D9541FF, - 0xA8017139, 0x0CB3DE08, 0xB4E49CD8, 0x56C19064, 0xCB84617B, 0x32B670D5, 0x6C5C7448, 0xB85742D0 - )); - - foreach ($dt3 as $dt3i) { - $dt0[] = (($dt3i << 24) & 0xFF000000) | (($dt3i >> 8) & 0x00FFFFFF); - $dt1[] = (($dt3i << 16) & 0xFFFF0000) | (($dt3i >> 16) & 0x0000FFFF); - $dt2[] = (($dt3i << 8) & 0xFFFFFF00) | (($dt3i >> 24) & 0x000000FF); - }; - - $tables = array( - // The Precomputed inverse mixColumns tables dt0 - dt3 - $dt0, - $dt1, - $dt2, - $dt3, - // The inverse SubByte S-Box - array( - 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, - 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, - 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, - 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, - 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, - 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, - 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, - 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, - 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, - 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, - 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, - 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, - 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, - 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, - 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, - 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D - ) - ); - } - return $tables; - } - - /** - * Setup the performance-optimized function for de/encrypt() - * - * @see \phpseclib\Crypt\Base::_setupInlineCrypt() - * @access private - */ - function _setupInlineCrypt() - { - // Note: _setupInlineCrypt() will be called only if $this->changed === true - // So here we are'nt under the same heavy timing-stress as we are in _de/encryptBlock() or de/encrypt(). - // However...the here generated function- $code, stored as php callback in $this->inline_crypt, must work as fast as even possible. - - $lambda_functions =& self::_getLambdaFunctions(); - - // We create max. 10 hi-optimized code for memory reason. Means: For each $key one ultra fast inline-crypt function. - // (Currently, for Crypt_Rijndael/AES, one generated $lambda_function cost on php5.5@32bit ~80kb unfreeable mem and ~130kb on php5.5@64bit) - // After that, we'll still create very fast optimized code but not the hi-ultimative code, for each $mode one. - $gen_hi_opt_code = (bool)(count($lambda_functions) < 10); - - // Generation of a uniqe hash for our generated code - $code_hash = "Crypt_Rijndael, {$this->mode}, {$this->Nr}, {$this->Nb}"; - if ($gen_hi_opt_code) { - $code_hash = str_pad($code_hash, 32) . $this->_hashInlineCryptFunction($this->key); - } - - if (!isset($lambda_functions[$code_hash])) { - switch (true) { - case $gen_hi_opt_code: - // The hi-optimized $lambda_functions will use the key-words hardcoded for better performance. - $w = $this->w; - $dw = $this->dw; - $init_encrypt = ''; - $init_decrypt = ''; - break; - default: - for ($i = 0, $cw = count($this->w); $i < $cw; ++$i) { - $w[] = '$w[' . $i . ']'; - $dw[] = '$dw[' . $i . ']'; - } - $init_encrypt = '$w = $self->w;'; - $init_decrypt = '$dw = $self->dw;'; - } - - $Nr = $this->Nr; - $Nb = $this->Nb; - $c = $this->c; - - // Generating encrypt code: - $init_encrypt.= ' - static $tables; - if (empty($tables)) { - $tables = &$self->_getTables(); - } - $t0 = $tables[0]; - $t1 = $tables[1]; - $t2 = $tables[2]; - $t3 = $tables[3]; - $sbox = $tables[4]; - '; - - $s = 'e'; - $e = 's'; - $wc = $Nb - 1; - - // Preround: addRoundKey - $encrypt_block = '$in = unpack("N*", $in);'."\n"; - for ($i = 0; $i < $Nb; ++$i) { - $encrypt_block .= '$s'.$i.' = $in['.($i + 1).'] ^ '.$w[++$wc].";\n"; - } - - // Mainrounds: shiftRows + subWord + mixColumns + addRoundKey - for ($round = 1; $round < $Nr; ++$round) { - list($s, $e) = array($e, $s); - for ($i = 0; $i < $Nb; ++$i) { - $encrypt_block.= - '$'.$e.$i.' = - $t0[($'.$s.$i .' >> 24) & 0xff] ^ - $t1[($'.$s.(($i + $c[1]) % $Nb).' >> 16) & 0xff] ^ - $t2[($'.$s.(($i + $c[2]) % $Nb).' >> 8) & 0xff] ^ - $t3[ $'.$s.(($i + $c[3]) % $Nb).' & 0xff] ^ - '.$w[++$wc].";\n"; - } - } - - // Finalround: subWord + shiftRows + addRoundKey - for ($i = 0; $i < $Nb; ++$i) { - $encrypt_block.= - '$'.$e.$i.' = - $sbox[ $'.$e.$i.' & 0xff] | - ($sbox[($'.$e.$i.' >> 8) & 0xff] << 8) | - ($sbox[($'.$e.$i.' >> 16) & 0xff] << 16) | - ($sbox[($'.$e.$i.' >> 24) & 0xff] << 24);'."\n"; - } - $encrypt_block .= '$in = pack("N*"'."\n"; - for ($i = 0; $i < $Nb; ++$i) { - $encrypt_block.= ', - ($'.$e.$i .' & '.((int)0xFF000000).') ^ - ($'.$e.(($i + $c[1]) % $Nb).' & 0x00FF0000 ) ^ - ($'.$e.(($i + $c[2]) % $Nb).' & 0x0000FF00 ) ^ - ($'.$e.(($i + $c[3]) % $Nb).' & 0x000000FF ) ^ - '.$w[$i]."\n"; - } - $encrypt_block .= ');'; - - // Generating decrypt code: - $init_decrypt.= ' - static $invtables; - if (empty($invtables)) { - $invtables = &$self->_getInvTables(); - } - $dt0 = $invtables[0]; - $dt1 = $invtables[1]; - $dt2 = $invtables[2]; - $dt3 = $invtables[3]; - $isbox = $invtables[4]; - '; - - $s = 'e'; - $e = 's'; - $wc = $Nb - 1; - - // Preround: addRoundKey - $decrypt_block = '$in = unpack("N*", $in);'."\n"; - for ($i = 0; $i < $Nb; ++$i) { - $decrypt_block .= '$s'.$i.' = $in['.($i + 1).'] ^ '.$dw[++$wc].';'."\n"; - } - - // Mainrounds: shiftRows + subWord + mixColumns + addRoundKey - for ($round = 1; $round < $Nr; ++$round) { - list($s, $e) = array($e, $s); - for ($i = 0; $i < $Nb; ++$i) { - $decrypt_block.= - '$'.$e.$i.' = - $dt0[($'.$s.$i .' >> 24) & 0xff] ^ - $dt1[($'.$s.(($Nb + $i - $c[1]) % $Nb).' >> 16) & 0xff] ^ - $dt2[($'.$s.(($Nb + $i - $c[2]) % $Nb).' >> 8) & 0xff] ^ - $dt3[ $'.$s.(($Nb + $i - $c[3]) % $Nb).' & 0xff] ^ - '.$dw[++$wc].";\n"; - } - } - - // Finalround: subWord + shiftRows + addRoundKey - for ($i = 0; $i < $Nb; ++$i) { - $decrypt_block.= - '$'.$e.$i.' = - $isbox[ $'.$e.$i.' & 0xff] | - ($isbox[($'.$e.$i.' >> 8) & 0xff] << 8) | - ($isbox[($'.$e.$i.' >> 16) & 0xff] << 16) | - ($isbox[($'.$e.$i.' >> 24) & 0xff] << 24);'."\n"; - } - $decrypt_block .= '$in = pack("N*"'."\n"; - for ($i = 0; $i < $Nb; ++$i) { - $decrypt_block.= ', - ($'.$e.$i. ' & '.((int)0xFF000000).') ^ - ($'.$e.(($Nb + $i - $c[1]) % $Nb).' & 0x00FF0000 ) ^ - ($'.$e.(($Nb + $i - $c[2]) % $Nb).' & 0x0000FF00 ) ^ - ($'.$e.(($Nb + $i - $c[3]) % $Nb).' & 0x000000FF ) ^ - '.$dw[$i]."\n"; - } - $decrypt_block .= ');'; - - $lambda_functions[$code_hash] = $this->_createInlineCryptFunction( - array( - 'init_crypt' => '', - 'init_encrypt' => $init_encrypt, - 'init_decrypt' => $init_decrypt, - 'encrypt_block' => $encrypt_block, - 'decrypt_block' => $decrypt_block - ) - ); - } - $this->inline_crypt = $lambda_functions[$code_hash]; - } -} diff --git a/libraries/phpseclib/LICENSE b/libraries/phpseclib/LICENSE deleted file mode 100644 index 75f6b2045c..0000000000 --- a/libraries/phpseclib/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2007-2013 TerraFrost and other contributors -http://phpseclib.sourceforge.net/ - -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. diff --git a/libraries/sql-parser/ClassLoader.php b/libraries/sql-parser/ClassLoader.php deleted file mode 100644 index 3ff2f69de3..0000000000 --- a/libraries/sql-parser/ClassLoader.php +++ /dev/null @@ -1,250 +0,0 @@ - - * Jordi Boggiano - * - * @package SqlParser - * @subpackage Autoload - */ -namespace SqlParser\Autoload; - -/** - * ClassLoader implements a PSR-4 class loader, - * - * This class is loosely based on the Symfony UniversalClassLoader. - * This class is a stripped version of Composer's ClassLoader. - * - * @package SqlParser - * @subpackage Autoload - * @author Fabien Potencier - * @author Jordi Boggiano - */ -class ClassLoader -{ - public $prefixLengths = array(); - public $prefixDirs = array(); - public $fallbackDirs = array(); - - public $classMap = array(); - - public $classMapAuthoritative = false; - - /** - * @param array $classMap Class to filename map - * - * @return void - */ - public function addClassMap(array $classMap) - { - if (!empty($this->classMap)) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * 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-0 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirs = array_merge( - (array) $paths, - $this->fallbackDirs - ); - } else { - $this->fallbackDirs = array_merge( - $this->fallbackDirs, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirs[$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->prefixLengths[$prefix[0]][$prefix] = $length; - $this->prefixDirs[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirs[$prefix] = array_merge( - (array) $paths, - $this->prefixDirs[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirs[$prefix] = array_merge( - $this->prefixDirs[$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 - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirs = (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->prefixLengths[$prefix[0]][$prefix] = $length; - $this->prefixDirs[$prefix] = (array) $paths; - } - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * 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) - { - // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731 - if ('\\' == $class[0]) { - $class = substr($class, 1); - } - - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative) { - return false; - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if ($file === null && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if ($file === null) { - // Remember that this class does not exist. - return $this->classMap[$class] = false; - } - - return $file; - } - - /** - * Finds a file that defines the specified class and has the specified - * extension. - * - * @param string $class The name of the class - * @param string $ext The extension of the file - * - * @return string|false The path if found, false otherwise - */ - public function findFileWithExtension($class, $ext) - { - $logicalPath = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengths[$first])) { - foreach ($this->prefixLengths[$first] as $prefix => $length) { - if (0 === strpos($class, $prefix)) { - foreach ($this->prefixDirs[$prefix] as $dir) { - if (is_file($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPath, $length))) { - return $file; - } - } - } - } - } - - foreach ($this->fallbackDirs as $dir) { - if (is_file($file = $dir . DIRECTORY_SEPARATOR . $logicalPath)) { - return $file; - } - } - - return false; - } -} - -if (!function_exists('SqlParser\\Autoload\\includeFile')) { - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file The name of the file - * - * @return void - */ - function includeFile($file) - { - include $file; - } -} diff --git a/libraries/sql-parser/autoload.php b/libraries/sql-parser/autoload.php deleted file mode 100644 index 21298b6ced..0000000000 --- a/libraries/sql-parser/autoload.php +++ /dev/null @@ -1,77 +0,0 @@ - - * Jordi Boggiano - * - * @package SqlParser - * @subpackage Autoload - */ -namespace SqlParser\Autoload; - -if (!class_exists('SqlParser\\Autoload\\ClassLoader')) { - if (! file_exists('./libraries/sql-parser/ClassLoader.php')) { - die('Invalid invocation'); - } - include_once './libraries/sql-parser/ClassLoader.php'; -} - -use SqlParser\Autoload\ClassLoader; - -/** - * Initializes the autoloader. - * - * @package SqlParser - * @subpackage Autoload - */ -class AutoloaderInit -{ - - /** - * The loader instance. - * - * @var ClassLoader - */ - public static $loader; - - /** - * Constructs and returns the class loader. - * - * @param array $map Array containing path to each namespace. - * - * @return ClassLoader - */ - public static function getLoader(array $map) - { - if (null !== self::$loader) { - return self::$loader; - } - - self::$loader = $loader = new ClassLoader(); - - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $loader->register(true); - - return $loader; - } -} - -// php-gettext is used to translate error messages. -// This must be included before any class of the parser is loaded because -// if there is no `__` function defined, the library defines a dummy one -// in `common.php`. -require_once './libraries/php-gettext/gettext.inc'; - -// Initializing the autoloader. -return AutoloaderInit::getLoader( - array( - 'SqlParser\\' => array(dirname(__FILE__) . '/src'), - ) -); diff --git a/libraries/sql-parser/src/Component.php b/libraries/sql-parser/src/Component.php deleted file mode 100644 index 2e406c5c7b..0000000000 --- a/libraries/sql-parser/src/Component.php +++ /dev/null @@ -1,82 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -abstract class Component -{ - - /** - * Parses the tokens contained in the given list in the context of the given - * parser. - * - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @throws \Exception Not implemented yet. - * - * @return mixed - */ - public static function parse( - Parser $parser, - TokensList $list, - array $options = array() - ) { - // This method should be abstract, but it can't be both static and - // abstract. - throw new \Exception(\__('Not implemented yet.')); - } - - /** - * Builds the string representation of a component of this type. - * - * In other words, this function represents the inverse function of - * `static::parse`. - * - * @param mixed $component The component to be built. - * @param array $options Parameters for building. - * - * @throws \Exception Not implemented yet. - * - * @return string - */ - public static function build($component, array $options = array()) - { - // This method should be abstract, but it can't be both static and - // abstract. - throw new \Exception(\__('Not implemented yet.')); - } - - /** - * Builds the string representation of a component of this type. - * - * @see static::build - * - * @return string - */ - public function __toString() - { - return static::build($this); - } -} diff --git a/libraries/sql-parser/src/Components/AlterOperation.php b/libraries/sql-parser/src/Components/AlterOperation.php deleted file mode 100644 index d0b09f18bd..0000000000 --- a/libraries/sql-parser/src/Components/AlterOperation.php +++ /dev/null @@ -1,225 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class AlterOperation extends Component -{ - - /** - * All alter operations. - * - * @var array - */ - public static $OPTIONS = array( - - // table_options - 'ENGINE' => array(1, 'var='), - 'AUTO_INCREMENT' => array(1, 'var='), - 'AVG_ROW_LENGTH' => array(1, 'var'), - 'MAX_ROWS' => array(1, 'var'), - 'ROW_FORMAT' => array(1, 'var'), - - 'ADD' => 1, - 'ALTER' => 1, - 'ANALYZE' => 1, - 'CHANGE' => 1, - 'CHECK' => 1, - 'COALESCE' => 1, - 'CONVERT' => 1, - 'DISABLE' => 1, - 'DISCARD' => 1, - 'DROP' => 1, - 'ENABLE' => 1, - 'IMPORT' => 1, - 'MODIFY' => 1, - 'OPTIMIZE' => 1, - 'ORDER' => 1, - 'PARTITION' => 1, - 'REBUILD' => 1, - 'REMOVE' => 1, - 'RENAME' => 1, - 'REORGANIZE' => 1, - 'REPAIR' => 1, - - 'COLUMN' => 2, - 'CONSTRAINT' => 2, - 'DEFAULT' => 2, - 'TO' => 2, - 'BY' => 2, - 'FOREIGN' => 2, - 'FULLTEXT' => 2, - 'KEY' => 2, - 'KEYS' => 2, - 'PARTITIONING' => 2, - 'PRIMARY KEY' => 2, - 'SPATIAL' => 2, - 'TABLESPACE' => 2, - 'INDEX' => 2, - - 'DEFAULT CHARACTER SET' => array(3, 'var'), - 'DEFAULT CHARSET' => array(3, 'var'), - - 'COLLATE' => array(4, 'var'), - ); - - /** - * Options of this operation. - * - * @var OptionsArray - */ - public $options; - - /** - * The altered field. - * - * @var Expression - */ - public $field; - - /** - * Unparsed tokens. - * - * @var Token[]|string - */ - public $unknown = array(); - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return AlterOperation - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new AlterOperation(); - - /** - * Counts brackets. - * - * @var int $brackets - */ - $brackets = 0; - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ---------------------[ options ]---------------------> 1 - * - * 1 ----------------------[ field ]----------------------> 2 - * - * 2 -------------------------[ , ]-----------------------> 0 - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping comments. - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - // Skipping whitespaces. - if ($token->type === Token::TYPE_WHITESPACE) { - if ($state === 2) { - // When parsing the unknown part, the whitespaces are - // included to not break anything. - $ret->unknown[] = $token; - } - continue; - } - - if ($state === 0) { - $ret->options = OptionsArray::parse($parser, $list, static::$OPTIONS); - $state = 1; - } elseif ($state === 1) { - $ret->field = Expression::parse( - $parser, - $list, - array( - 'breakOnAlias' => true, - 'parseField' => 'column', - ) - ); - if ($ret->field === null) { - // No field was read. We go back one token so the next - // iteration will parse the same token, but in state 2. - --$list->idx; - } - $state = 2; - } elseif ($state === 2) { - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - ++$brackets; - } elseif ($token->value === ')') { - --$brackets; - } elseif (($token->value === ',') && ($brackets === 0)) { - break; - } - } - $ret->unknown[] = $token; - } - } - - if ($ret->options->isEmpty()) { - $parser->error( - __('Unrecognized alter operation.'), - $list->tokens[$list->idx] - ); - } - - --$list->idx; - return $ret; - } - - /** - * @param AlterOperation $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - $ret = $component->options . ' '; - if ((isset($component->field)) && ($component->field !== '')) { - $ret .= $component->field . ' '; - } - $ret .= TokensList::build($component->unknown); - return $ret; - } -} diff --git a/libraries/sql-parser/src/Components/Array2d.php b/libraries/sql-parser/src/Components/Array2d.php deleted file mode 100644 index a46813b081..0000000000 --- a/libraries/sql-parser/src/Components/Array2d.php +++ /dev/null @@ -1,134 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Array2d extends Component -{ - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return ArrayObj[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - /** - * The number of values in each set. - * - * @var int $count - */ - $count = -1; - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ----------------------[ array ]----------------------> 1 - * - * 1 ------------------------[ , ]------------------------> 0 - * 1 -----------------------[ else ]----------------------> (END) - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - // No keyword is expected. - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { - break; - } - - if ($state === 0) { - if ($token->value === '(') { - $arr = ArrayObj::parse($parser, $list, $options); - $arrCount = count($arr->values); - if ($count === -1) { - $count = $arrCount; - } elseif ($arrCount != $count) { - $parser->error( - sprintf( - __('%1$d values were expected, but found %2$d.'), - $count, - $arrCount - ), - $token - ); - } - $ret[] = $arr; - $state = 1; - } else { - break; - } - } elseif ($state === 1) { - if ($token->value === ',') { - $state = 0; - } else { - break; - } - } - } - - if ($state === 0) { - $parser->error( - __('An opening bracket followed by a set of values was expected.'), - $list->tokens[$list->idx] - ); - } - - --$list->idx; - return $ret; - } - - /** - * @param ArrayObj[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - return ArrayObj::build($component); - } -} diff --git a/libraries/sql-parser/src/Components/ArrayObj.php b/libraries/sql-parser/src/Components/ArrayObj.php deleted file mode 100644 index 56c7247e9b..0000000000 --- a/libraries/sql-parser/src/Components/ArrayObj.php +++ /dev/null @@ -1,194 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ArrayObj extends Component -{ - - /** - * The array that contains the unprocessed value of each token. - * - * @var array - */ - public $raw = array(); - - /** - * The array that contains the processed value of each token. - * - * @var array - */ - public $values = array(); - - /** - * Constructor. - * - * @param array $raw The unprocessed values. - * @param array $values The processed values. - */ - public function __construct(array $raw = array(), array $values = array()) - { - $this->raw = $raw; - $this->values = $values; - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return ArrayObj|Component[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = empty($options['type']) ? new ArrayObj() : array(); - - /** - * The last raw expression. - * - * @var string $lastRaw - */ - $lastRaw = ''; - - /** - * The last value. - * - * @var string $lastValue - */ - $lastValue = ''; - - /** - * Counts brackets. - * - * @var int $brackets - */ - $brackets = 0; - - /** - * Last separator (bracket or comma). - * - * @var boolean $isCommaLast - */ - $isCommaLast = false; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) - || ($token->type === Token::TYPE_COMMENT) - ) { - $lastRaw .= $token->token; - $lastValue = trim($lastValue) .' '; - continue; - } - - if (($brackets === 0) - && (($token->type !== Token::TYPE_OPERATOR) - || ($token->value !== '(')) - ) { - $parser->error(__('An opening bracket was expected.'), $token); - break; - } - - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - if (++$brackets === 1) { // 1 is the base level. - continue; - } - } elseif ($token->value === ')') { - if (--$brackets === 0) { // Array ended. - break; - } - } elseif ($token->value === ',') { - if ($brackets === 1) { - $isCommaLast = true; - if (empty($options['type'])) { - $ret->raw[] = trim($lastRaw); - $ret->values[] = trim($lastValue); - $lastRaw = $lastValue = ''; - } - } - continue; - } - } - - if (empty($options['type'])) { - $lastRaw .= $token->token; - $lastValue .= $token->value; - } else { - $ret[] = $options['type']::parse( - $parser, - $list, - empty($options['typeOptions']) ? array() : $options['typeOptions'] - ); - } - } - - // Handling last element. - // - // This is treated differently to treat the following cases: - // - // => array() - // (,) => array('', '') - // () => array() - // (a,) => array('a', '') - // (a) => array('a') - // - $lastRaw = trim($lastRaw); - if ((empty($options['type'])) - && ((strlen($lastRaw) > 0) || ($isCommaLast)) - ) { - $ret->raw[] = $lastRaw; - $ret->values[] = trim($lastValue); - } - - return $ret; - } - - /** - * @param ArrayObj|ArrayObj[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return implode(', ', $component); - } elseif (!empty($component->raw)) { - return '(' . implode(', ', $component->raw) . ')'; - } else { - return '(' . implode(', ', $component->values) . ')'; - } - } -} diff --git a/libraries/sql-parser/src/Components/Condition.php b/libraries/sql-parser/src/Components/Condition.php deleted file mode 100644 index f3179ead44..0000000000 --- a/libraries/sql-parser/src/Components/Condition.php +++ /dev/null @@ -1,223 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Condition extends Component -{ - - /** - * Logical operators that can be used to delimit expressions. - * - * @var array - */ - public static $DELIMITERS = array('&&', '||', 'AND', 'OR', 'XOR'); - - /** - * List of allowed reserved keywords in conditions. - * - * @var array - */ - public static $ALLOWED_KEYWORDS = array( - 'AND' => 1, - 'BETWEEN' => 1, - 'EXISTS' => 1, - 'IF' => 1, - 'IN' => 1, - 'INTERVAL' => 1, - 'IS' => 1, - 'LIKE' => 1, - 'MATCH' => 1, - 'NOT IN' => 1, - 'NOT NULL' => 1, - 'NOT' => 1, - 'NULL' => 1, - 'OR' => 1, - 'XOR' => 1, - ); - - /** - * Identifiers recognized. - * - * @var array - */ - public $identifiers = array(); - - /** - * Whether this component is an operator. - * - * @var bool - */ - public $isOperator = false; - - /** - * The condition. - * - * @var string - */ - public $expr; - - /** - * Constructor. - * - * @param string $expr The condition or the operator. - */ - public function __construct($expr = null) - { - $this->expr = trim($expr); - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return Condition[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - $expr = new Condition(); - - /** - * Counts brackets. - * - * @var int $brackets - */ - $brackets = 0; - - /** - * Whether there was a `BETWEEN` keyword before or not. - * - * It is required to keep track of them because their structure contains - * the keyword `AND`, which is also an operator that delimits - * expressions. - * - * @var bool $betweenBefore - */ - $betweenBefore = false; - - for (; $list->idx < $list->count; ++$list->idx) { - - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - // Replacing all whitespaces (new lines, tabs, etc.) with a single - // space character. - if ($token->type === Token::TYPE_WHITESPACE) { - $expr->expr .= ' '; - continue; - } - - // Conditions are delimited by logical operators. - if (in_array($token->value, static::$DELIMITERS, true)) { - if (($betweenBefore) && ($token->value === 'AND')) { - // The syntax of keyword `BETWEEN` is hard-coded. - $betweenBefore = false; - } else { - // The expression ended. - $expr->expr = trim($expr->expr); - if (!empty($expr->expr)) { - $ret[] = $expr; - } - - // Adding the operator. - $expr = new Condition($token->value); - $expr->isOperator = true; - $ret[] = $expr; - - // Preparing to parse another condition. - $expr = new Condition(); - continue; - } - } - - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { - if ($token->value === 'BETWEEN') { - $betweenBefore = true; - } - if (($brackets === 0) && (empty(static::$ALLOWED_KEYWORDS[$token->value]))) { - break; - } - } - - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - ++$brackets; - } elseif ($token->value === ')') { - --$brackets; - } - } - - $expr->expr .= $token->token; - if (($token->type === Token::TYPE_NONE) - || (($token->type === Token::TYPE_KEYWORD) - && (!($token->flags & Token::FLAG_KEYWORD_RESERVED))) - || ($token->type === Token::TYPE_STRING) - || ($token->type === Token::TYPE_SYMBOL) - ) { - if (!in_array($token->value, $expr->identifiers)) { - $expr->identifiers[] = $token->value; - } - } - } - - // Last iteration was not processed. - $expr->expr = trim($expr->expr); - if (!empty($expr->expr)) { - $ret[] = $expr; - } - - --$list->idx; - return $ret; - } - - /** - * @param Condition[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return implode(' ', $component); - } else { - return $component->expr; - } - } -} diff --git a/libraries/sql-parser/src/Components/CreateDefinition.php b/libraries/sql-parser/src/Components/CreateDefinition.php deleted file mode 100644 index 13e5e83a59..0000000000 --- a/libraries/sql-parser/src/Components/CreateDefinition.php +++ /dev/null @@ -1,317 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class CreateDefinition extends Component -{ - - /** - * All field options. - * - * @var array - */ - public static $FIELD_OPTIONS = array( - - // Tells the `OptionsArray` to not sort the options. - // See the note below. - '_UNSORTED' => true, - - 'NOT NULL' => 1, - 'NULL' => 1, - 'DEFAULT' => array(2, 'expr'), - 'AUTO_INCREMENT' => 3, - 'PRIMARY' => 4, - 'PRIMARY KEY' => 4, - 'UNIQUE' => 4, - 'UNIQUE KEY' => 4, - 'COMMENT' => array(5, 'var'), - 'COLUMN_FORMAT' => array(6, 'var'), - 'ON UPDATE' => array(7, 'var'), - - // Generated columns options. - 'GENERATED ALWAYS' => 8, - 'AS' => array(9, 'expr', array('parenthesesDelimited' => true)), - 'VIRTUAL' => 10, - 'PERSISTENT' => 11, - 'STORED' => 11, - // Common entries. - // - // NOTE: Some of the common options are not in the same order which - // causes troubles when checking if the options are in the right order. - // I should find a way to define multiple sets of options and make the - // parser select the right set. - // - // 'UNIQUE' => 4, - // 'UNIQUE KEY' => 4, - // 'COMMENT' => array(5, 'var'), - // 'NOT NULL' => 1, - // 'NULL' => 1, - // 'PRIMARY' => 4, - // 'PRIMARY KEY' => 4, - ); - - /** - * The name of the new column. - * - * @var string - */ - public $name; - - /** - * Whether this field is a constraint or not. - * - * @var bool - */ - public $isConstraint; - - /** - * The data type of thew new column. - * - * @var DataType - */ - public $type; - - /** - * The key. - * - * @var Key - */ - public $key; - - /** - * The table that is referenced. - * - * @var Reference - */ - public $references; - - /** - * The options of this field. - * - * @var OptionsArray - */ - public $options; - - /** - * Constructor. - * - * @param string $name The name of the field. - * @param OptionsArray $options The options of this field. - * @param DataType|Key $type The data type of this field or the key. - * @param bool $isConstraint Whether this field is a constraint or not. - * @param Reference $references References. - */ - public function __construct( - $name = null, - $options = null, - $type = null, - $isConstraint = false, - $references = null - ) { - $this->name = $name; - $this->options = $options; - if ($type instanceof DataType) { - $this->type = $type; - } elseif ($type instanceof Key) { - $this->key = $type; - $this->isConstraint = $isConstraint; - $this->references = $references; - } - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return CreateDefinition[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - $expr = new CreateDefinition(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------------[ ( ]------------------------> 1 - * - * 1 --------------------[ CONSTRAINT ]------------------> 1 - * 1 -----------------------[ key ]----------------------> 2 - * 1 -------------[ constraint / column name ]-----------> 2 - * - * 2 --------------------[ data type ]-------------------> 3 - * - * 3 ---------------------[ options ]--------------------> 4 - * - * 4 --------------------[ REFERENCES ]------------------> 4 - * - * 5 ------------------------[ , ]-----------------------> 1 - * 5 ------------------------[ ) ]-----------------------> 6 (-1) - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $state = 1; - } else { - $parser->error( - __('An opening bracket was expected.'), - $token - ); - break; - } - } elseif ($state === 1) { - if (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'CONSTRAINT')) { - $expr->isConstraint = true; - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_KEY)) { - $expr->key = Key::parse($parser, $list); - $state = 4; - } else { - $expr->name = $token->value; - if (!$expr->isConstraint) { - $state = 2; - } - } - } elseif ($state === 2) { - $expr->type = DataType::parse($parser, $list); - $state = 3; - } elseif ($state === 3) { - $expr->options = OptionsArray::parse($parser, $list, static::$FIELD_OPTIONS); - $state = 4; - } elseif ($state === 4) { - if (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'REFERENCES')) { - ++$list->idx; // Skipping keyword 'REFERENCES'. - $expr->references = Reference::parse($parser, $list); - } else { - --$list->idx; - } - $state = 5; - } elseif ($state === 5) { - if ((!empty($expr->type)) || (!empty($expr->key))) { - $ret[] = $expr; - } - $expr = new CreateDefinition(); - if ($token->value === ',') { - $state = 1; - } elseif ($token->value === ')') { - $state = 6; - ++$list->idx; - break; - } else { - $parser->error( - __('A comma or a closing bracket was expected.'), - $token - ); - $state = 0; - break; - } - } - } - - // Last iteration was not saved. - if ((!empty($expr->type)) || (!empty($expr->key))) { - $ret[] = $expr; - } - - if (($state !== 0) && ($state !== 6)) { - $parser->error( - __('A closing bracket was expected.'), - $list->tokens[$list->idx - 1] - ); - } - - --$list->idx; - return $ret; - } - - /** - * @param CreateDefinition|CreateDefinition[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return "(\n " . implode(",\n ", $component) . "\n)"; - } else { - $tmp = ''; - - if ($component->isConstraint) { - $tmp .= 'CONSTRAINT '; - } - - if ((isset($component->name)) && ($component->name !== '')) { - $tmp .= Context::escape($component->name) . ' '; - } - - if (!empty($component->type)) { - $tmp .= DataType::build( - $component->type, - array('lowercase' => true) - ) . ' '; - } - - if (!empty($component->key)) { - $tmp .= $component->key . ' '; - } - - if (!empty($component->references)) { - $tmp .= 'REFERENCES ' . $component->references . ' '; - } - - $tmp .= $component->options; - - return trim($tmp); - } - } -} diff --git a/libraries/sql-parser/src/Components/DataType.php b/libraries/sql-parser/src/Components/DataType.php deleted file mode 100644 index aac40ee3fa..0000000000 --- a/libraries/sql-parser/src/Components/DataType.php +++ /dev/null @@ -1,171 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class DataType extends Component -{ - - /** - * All data type options. - * - * @var array - */ - public static $DATA_TYPE_OPTIONS = array( - 'BINARY' => 1, - 'CHARACTER SET' => array(2, 'var'), - 'CHARSET' => array(2, 'var'), - 'COLLATE' => array(3, 'var'), - 'UNSIGNED' => 4, - 'ZEROFILL' => 5, - ); - - /** - * The name of the data type. - * - * @var string - */ - public $name; - - /** - * The parameters of this data type. - * - * Some data types have no parameters. - * Numeric types might have parameters for the maximum number of digits, - * precision, etc. - * String types might have parameters for the maximum length stored. - * `ENUM` and `SET` have parameters for possible values. - * - * For more information, check the MySQL manual. - * - * @var array - */ - public $parameters = array(); - - /** - * The options of this data type. - * - * @var OptionsArray - */ - public $options; - - /** - * Constructor. - * - * @param string $name The name of this data type. - * @param array $parameters The parameters (size or possible values). - * @param OptionsArray $options The options of this data type. - */ - public function __construct( - $name = null, - array $parameters = array(), - $options = null - ) { - $this->name = $name; - $this->parameters = $parameters; - $this->options = $options; - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return DataType - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new DataType(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -------------------[ data type ]--------------------> 1 - * - * 1 ----------------[ size and options ]----------------> 2 - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->name = strtoupper($token->value); - if (($token->type !== Token::TYPE_KEYWORD) || (!($token->flags & Token::FLAG_KEYWORD_DATA_TYPE))) { - $parser->error(__('Unrecognized data type.'), $token); - } - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $parameters = ArrayObj::parse($parser, $list); - ++$list->idx; - $ret->parameters = (($ret->name === 'ENUM') || ($ret->name === 'SET')) ? - $parameters->raw : $parameters->values; - } - $ret->options = OptionsArray::parse($parser, $list, static::$DATA_TYPE_OPTIONS); - ++$list->idx; - break; - } - - } - - if (empty($ret->name)) { - return null; - } - - --$list->idx; - return $ret; - } - - /** - * @param DataType $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - $name = (empty($options['lowercase'])) ? - $component->name : strtolower($component->name); - - $parameters = ''; - if (!empty($component->parameters)) { - $parameters = '(' . implode(',', $component->parameters) . ')'; - } - - return trim($name . $parameters . ' ' . $component->options); - } -} diff --git a/libraries/sql-parser/src/Components/Expression.php b/libraries/sql-parser/src/Components/Expression.php deleted file mode 100644 index f6d3895479..0000000000 --- a/libraries/sql-parser/src/Components/Expression.php +++ /dev/null @@ -1,435 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Expression extends Component -{ - - /** - * List of allowed reserved keywords in expressions. - * - * @var array - */ - private static $ALLOWED_KEYWORDS = array( - 'AS' => 1, 'DUAL' => 1, 'NULL' => 1, 'REGEXP' => 1 - ); - - /** - * The name of this database. - * - * @var string - */ - public $database; - - /** - * The name of this table. - * - * @var string - */ - public $table; - - /** - * The name of the column. - * - * @var string - */ - public $column; - - /** - * The sub-expression. - * - * @var string - */ - public $expr = ''; - - /** - * The alias of this expression. - * - * @var string - */ - public $alias; - - /** - * The name of the function. - * - * @var mixed - */ - public $function; - - /** - * The type of subquery. - * - * @var string - */ - public $subquery; - - /** - * Constructor. - * - * Syntax: - * new Expression('expr') - * new Expression('expr', 'alias') - * new Expression('database', 'table', 'column') - * new Expression('database', 'table', 'column', 'alias') - * - * If the database, table or column name is not required, pass an empty - * string. - * - * @param string $database The name of the database or the the expression. - * the the expression. - * @param string $table The name of the table or the alias of the expression. - * the alias of the expression. - * @param string $column The name of the column. - * @param string $alias The name of the alias. - */ - public function __construct($database = null, $table = null, $column = null, $alias = null) - { - if (($column === null) && ($alias === null)) { - $this->expr = $database; // case 1 - $this->alias = $table; // case 2 - } else { - $this->database = $database; // case 3 - $this->table = $table; // case 3 - $this->column = $column; // case 3 - $this->alias = $alias; // case 4 - } - } - - /** - * Possible options: - * - * `field` - * - * First field to be filled. - * If this is not specified, it takes the value of `parseField`. - * - * `parseField` - * - * Specifies the type of the field parsed. It may be `database`, - * `table` or `column`. These expressions may not include - * parentheses. - * - * `breakOnAlias` - * - * If not empty, breaks when the alias occurs (it is not included). - * - * `breakOnParentheses` - * - * If not empty, breaks when the first parentheses occurs. - * - * `parenthesesDelimited` - * - * If not empty, breaks after last parentheses occurred. - * - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return Expression - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new Expression(); - - /** - * Whether current tokens make an expression or a table reference. - * - * @var bool $isExpr - */ - $isExpr = false; - - /** - * Whether a period was previously found. - * - * @var bool $dot - */ - $dot = false; - - /** - * Whether an alias is expected. Is 2 if `AS` keyword was found. - * - * @var bool $alias - */ - $alias = false; - - /** - * Counts brackets. - * - * @var int $brackets - */ - $brackets = 0; - - /** - * Keeps track of the last two previous tokens. - * - * @var Token[] $prev - */ - $prev = array(null, null); - - // When a field is parsed, no parentheses are expected. - if (!empty($options['parseField'])) { - $options['breakOnParentheses'] = true; - $options['field'] = $options['parseField']; - } - - for (; $list->idx < $list->count; ++$list->idx) { - - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) - || ($token->type === Token::TYPE_COMMENT) - ) { - if ($isExpr) { - $ret->expr .= $token->token; - } - continue; - } - - if ($token->type === Token::TYPE_KEYWORD) { - if (($brackets > 0) && (empty($ret->subquery)) - && (!empty(Parser::$STATEMENT_PARSERS[$token->value])) - ) { - // A `(` was previously found and this keyword is the - // beginning of a statement, so this is a subquery. - $ret->subquery = $token->value; - } elseif (($token->flags & Token::FLAG_KEYWORD_FUNCTION) - && (empty($options['parseField'])) - ) { - $isExpr = true; - } elseif (($token->flags & Token::FLAG_KEYWORD_RESERVED) - && ($brackets === 0) - ) { - if (empty(self::$ALLOWED_KEYWORDS[$token->value])) { - // A reserved keyword that is not allowed in the - // expression was found so the expression must have - // ended and a new clause is starting. - break; - } - if ($token->value === 'AS') { - if (!empty($options['breakOnAlias'])) { - break; - } - if (!empty($ret->alias)) { - $parser->error( - __('An alias was previously found.'), - $token - ); - break; - } - $alias = true; - continue; - } - $isExpr = true; - } - } - - if (($token->type === Token::TYPE_NUMBER) - || ($token->type === Token::TYPE_BOOL) - || (($token->type === Token::TYPE_SYMBOL) - && ($token->flags & Token::FLAG_SYMBOL_VARIABLE)) - || (($token->type === Token::TYPE_OPERATOR) - && ($token->value !== '.')) - ) { - if (!empty($options['parseField'])) { - break; - } - - // Numbers, booleans and operators (except dot) are usually part - // of expressions. - $isExpr = true; - } - - if ($token->type === Token::TYPE_OPERATOR) { - if ((!empty($options['breakOnParentheses'])) - && (($token->value === '(') || ($token->value === ')')) - ) { - // No brackets were expected. - break; - } - if ($token->value === '(') { - ++$brackets; - if ((empty($ret->function)) && ($prev[1] !== null) - && (($prev[1]->type === Token::TYPE_NONE) - || ($prev[1]->type === Token::TYPE_SYMBOL) - || (($prev[1]->type === Token::TYPE_KEYWORD) - && ($prev[1]->flags & Token::FLAG_KEYWORD_FUNCTION))) - ) { - $ret->function = $prev[1]->value; - } - } elseif ($token->value === ')') { - --$brackets; - if ($brackets === 0) { - if (!empty($options['parenthesesDelimited'])) { - // The current token is the last bracket, the next - // one will be outside the expression. - $ret->expr .= $token->token; - ++$list->idx; - break; - } - } elseif ($brackets < 0) { - // $parser->error(__('Unexpected closing bracket.'), $token); - // $brackets = 0; - break; - } - } elseif ($token->value === ',') { - // Expressions are comma-delimited. - if ($brackets === 0) { - break; - } - } - } - - // Saving the previous tokens. - $prev[0] = $prev[1]; - $prev[1] = $token; - - if ($alias) { - // An alias is expected (the keyword `AS` was previously found). - if (!empty($ret->alias)) { - $parser->error(__('An alias was previously found.'), $token); - break; - } - $ret->alias = $token->value; - $alias = false; - } elseif ($isExpr) { - // Handling aliases. - if (/* (empty($ret->alias)) && */ ($brackets === 0) - && (($prev[0] === null) - || ((($prev[0]->type !== Token::TYPE_OPERATOR) - || ($prev[0]->token === ')')) - && (($prev[0]->type !== Token::TYPE_KEYWORD) - || (!($prev[0]->flags & Token::FLAG_KEYWORD_RESERVED))))) - && (($prev[1]->type === Token::TYPE_STRING) - || (($prev[1]->type === Token::TYPE_SYMBOL) - && (!($prev[1]->flags & Token::FLAG_SYMBOL_VARIABLE))) - || ($prev[1]->type === Token::TYPE_NONE)) - ) { - if (!empty($ret->alias)) { - $parser->error(__('An alias was previously found.'), $token); - break; - } - $ret->alias = $prev[1]->value; - } else { - $ret->expr .= $token->token; - } - } elseif (!$isExpr) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '.')) { - // Found a `.` which means we expect a column name and - // the column name we parsed is actually the table name - // and the table name is actually a database name. - if ((!empty($ret->database)) || ($dot)) { - $parser->error(__('Unexpected dot.'), $token); - } - $ret->database = $ret->table; - $ret->table = $ret->column; - $ret->column = null; - $dot = true; - $ret->expr .= $token->token; - } else { - $field = empty($options['field']) ? 'column' : $options['field']; - if (empty($ret->$field)) { - $ret->$field = $token->value; - $ret->expr .= $token->token; - $dot = false; - } else { - // No alias is expected. - if (!empty($options['breakOnAlias'])) { - break; - } - if (!empty($ret->alias)) { - $parser->error(__('An alias was previously found.'), $token); - break; - } - $ret->alias = $token->value; - } - } - } - } - - if ($alias) { - $parser->error( - __('An alias was expected.'), - $list->tokens[$list->idx - 1] - ); - } - - // White-spaces might be added at the end. - $ret->expr = trim($ret->expr); - - if (empty($ret->expr)) { - return null; - } - - --$list->idx; - return $ret; - } - - /** - * @param Expression|Expression[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return implode($component, ', '); - } else { - if (!empty($component->expr)) { - $ret = $component->expr; - } else { - $fields = array(); - if ((isset($component->database)) && ($component->database !== '')) { - $fields[] = $component->database; - } - if ((isset($component->table)) && ($component->table !== '')) { - $fields[] = $component->table; - } - if ((isset($component->column)) && ($component->column !== '')) { - $fields[] = $component->column; - } - $ret = implode('.', Context::escape($fields)); - } - - if (!empty($component->alias)) { - $ret .= ' AS ' . Context::escape($component->alias); - } - - return $ret; - } - } -} diff --git a/libraries/sql-parser/src/Components/ExpressionArray.php b/libraries/sql-parser/src/Components/ExpressionArray.php deleted file mode 100644 index f108ad8002..0000000000 --- a/libraries/sql-parser/src/Components/ExpressionArray.php +++ /dev/null @@ -1,122 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ExpressionArray extends Component -{ - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return Expression[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ----------------------[ array ]---------------------> 1 - * - * 1 ------------------------[ , ]------------------------> 0 - * 1 -----------------------[ else ]----------------------> (END) - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if (($token->type === Token::TYPE_KEYWORD) - && ($token->flags & Token::FLAG_KEYWORD_RESERVED) - && ((~$token->flags & Token::FLAG_KEYWORD_FUNCTION)) - && ($token->value !== 'DUAL') - && ($token->value !== 'NULL') - ) { - // No keyword is expected. - break; - } - - if ($state === 0) { - $expr = Expression::parse($parser, $list, $options); - if ($expr === null) { - break; - } - $ret[] = $expr; - $state = 1; - } elseif ($state === 1) { - if ($token->value === ',') { - $state = 0; - } else { - break; - } - } - } - - if ($state === 0) { - $parser->error( - __('An expression was expected.'), - $list->tokens[$list->idx] - ); - } - - --$list->idx; - return $ret; - } - - /** - * @param Expression[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - $ret = array(); - foreach ($component as $frag) { - $ret[] = $frag::build($frag); - } - return implode($ret, ', '); - } -} diff --git a/libraries/sql-parser/src/Components/FunctionCall.php b/libraries/sql-parser/src/Components/FunctionCall.php deleted file mode 100644 index 9d2dfed5d8..0000000000 --- a/libraries/sql-parser/src/Components/FunctionCall.php +++ /dev/null @@ -1,125 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class FunctionCall extends Component -{ - - /** - * The name of this function. - * - * @var string - */ - public $name; - - /** - * The list of parameters - * - * @var ArrayObj - */ - public $parameters; - - /** - * Constructor. - * - * @param string $name The name of the function to be called. - * @param array|ArrayObj $parameters The parameters of this function. - */ - public function __construct($name = null, $parameters = null) - { - $this->name = $name; - if (is_array($parameters)) { - $this->parameters = new ArrayObj($parameters); - } elseif ($parameters instanceof ArrayObj) { - $this->parameters = $parameters; - } - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return FunctionCall - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new FunctionCall(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ----------------------[ name ]-----------------------> 1 - * - * 1 --------------------[ parameters ]-------------------> (END) - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->name = $token->value; - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $ret->parameters = ArrayObj::parse($parser, $list); - } - break; - } - - } - - return $ret; - } - - /** - * @param FunctionCall $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - return $component->name . $component->parameters; - } -} diff --git a/libraries/sql-parser/src/Components/IntoKeyword.php b/libraries/sql-parser/src/Components/IntoKeyword.php deleted file mode 100644 index 56f349feb6..0000000000 --- a/libraries/sql-parser/src/Components/IntoKeyword.php +++ /dev/null @@ -1,148 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class IntoKeyword extends Component -{ - - /** - * Type of target (OUTFILE or SYMBOL). - * - * @var string - */ - public $type; - - /** - * The destination, which can be a table or a file. - * - * @var string|Expression - */ - public $dest; - - /** - * The name of the columns. - * - * @var array - */ - public $columns; - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return IntoKeyword - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new IntoKeyword(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------------[ name ]----------------------> 1 - * 0 ---------------------[ OUTFILE ]---------------------> 2 - * - * 1 ------------------------[ ( ]------------------------> (END) - * - * 2 ---------------------[ filename ]--------------------> 1 - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { - if (($state === 0) && ($token->value === 'OUTFILE')) { - $ret->type = 'OUTFILE'; - $state = 2; - continue; - } - - // No other keyword is expected. - break; - } - - if ($state === 0) { - $ret->dest = Expression::parse( - $parser, - $list, - array( - 'parseField' => 'table', - 'breakOnAlias' => true, - ) - ); - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $ret->columns = ArrayObj::parse($parser, $list)->values; - ++$list->idx; - } - break; - } elseif ($state === 2) { - $ret->dest = $token->value; - ++$list->idx; - break; - } - } - - --$list->idx; - return $ret; - } - - /** - * @param IntoKeyword $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if ($component->dest instanceof Expression) { - $columns = !empty($component->columns) ? - '(' . implode(', ', $component->columns) . ')' : ''; - return $component->dest . $columns; - } else { - return 'OUTFILE "' . $component->dest . '"'; - } - } -} diff --git a/libraries/sql-parser/src/Components/JoinKeyword.php b/libraries/sql-parser/src/Components/JoinKeyword.php deleted file mode 100644 index d8e6ee916b..0000000000 --- a/libraries/sql-parser/src/Components/JoinKeyword.php +++ /dev/null @@ -1,169 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class JoinKeyword extends Component -{ - - /** - * Types of join. - * - * @var array - */ - public static $JOINS = array( - 'FULL JOIN' => 'FULL', - 'INNER JOIN' => 'INNER', - 'JOIN' => 'JOIN', - 'LEFT JOIN' => 'LEFT', - 'LEFT OUTER JOIN' => 'LEFT', - 'RIGHT JOIN' => 'RIGHT', - 'RIGHT OUTER JOIN' => 'RIGHT', - 'STRAIGHT_JOIN' => 'STRAIGHT', - ); - - /** - * Type of this join. - * - * @see static::$JOINS - * @var string - */ - public $type; - - /** - * Join expression. - * - * @var Expression - */ - public $expr; - - /** - * Join conditions. - * - * @var Condition[] - */ - public $on; - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return JoinKeyword[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - $expr = new JoinKeyword(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------------[ JOIN ]----------------------> 1 - * - * 1 -----------------------[ expr ]----------------------> 2 - * - * 2 ------------------------[ ON ]-----------------------> 3 - * - * 3 --------------------[ conditions ]-------------------> 0 - * - * @var int $state - */ - $state = 0; - - // By design, the parser will parse first token after the keyword. - // In this case, the keyword must be analyzed too, in order to determine - // the type of this join. - if ($list->idx > 0) { - --$list->idx; - } - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - if (($token->type === Token::TYPE_KEYWORD) - && (!empty(static::$JOINS[$token->value])) - ) { - $expr->type = static::$JOINS[$token->value]; - $state = 1; - } else { - break; - } - } elseif ($state === 1) { - $expr->expr = Expression::parse($parser, $list, array('field' => 'table')); - $state = 2; - } elseif ($state === 2) { - if (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'ON')) { - $state = 3; - } - } elseif ($state === 3) { - $expr->on = Condition::parse($parser, $list); - $ret[] = $expr; - $expr = new JoinKeyword(); - $state = 0; - } - - } - - if (!empty($expr->type)) { - $ret[] = $expr; - } - - --$list->idx; - return $ret; - } - - /** - * @param JoinKeyword[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - $ret = array(); - foreach ($component as $c) { - $ret[] = array_search($c->type, static::$JOINS) . ' ' - . $c->expr . ' ON ' . Condition::build($c->on); - } - return implode(' ', $ret); - } -} diff --git a/libraries/sql-parser/src/Components/Key.php b/libraries/sql-parser/src/Components/Key.php deleted file mode 100644 index 161dfc6153..0000000000 --- a/libraries/sql-parser/src/Components/Key.php +++ /dev/null @@ -1,208 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Key extends Component -{ - - /** - * All key options. - * - * @var array - */ - public static $KEY_OPTIONS = array( - 'KEY_BLOCK_SIZE' => array(1, 'var'), - 'USING' => array(2, 'var'), - 'WITH PARSER' => array(3, 'var'), - 'COMMENT' => array(4, 'var='), - ); - - /** - * The name of this key. - * - * @var string - */ - public $name; - - /** - * Columns. - * - * @var array - */ - public $columns; - - /** - * The type of this key. - * - * @var string - */ - public $type; - - /** - * The options of this key. - * - * @var OptionsArray - */ - public $options; - - /** - * Constructor. - * - * @param string $name The name of the key. - * @param array $columns The columns covered by this key. - * @param string $type The type of this key. - * @param OptionsArray $options The options of this key. - */ - public function __construct( - $name = null, - array $columns = array(), - $type = null, - $options = null - ) { - $this->name = $name; - $this->columns = $columns; - $this->type = $type; - $this->options = $options; - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return Key[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new Key(); - - /** - * Last parsed column. - * - * @var array - */ - $lastColumn = array(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ----------------------[ type ]-----------------------> 1 - * - * 1 ----------------------[ name ]-----------------------> 1 - * 1 ---------------------[ columns ]---------------------> 2 - * - * 2 ---------------------[ options ]---------------------> 3 - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->type = $token->value; - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $state = 2; - } else { - $ret->name = $token->value; - } - } elseif ($state === 2) { - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - $state = 3; - } elseif (($token->value === ',') || ($token->value === ')')) { - $state = ($token->value === ',') ? 2 : 4; - if (!empty($lastColumn)) { - $ret->columns[] = $lastColumn; - $lastColumn = array(); - } - } - } else { - $lastColumn['name'] = $token->value; - } - } elseif ($state === 3) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ')')) { - $state = 2; - } else { - $lastColumn['length'] = $token->value; - } - } elseif ($state === 4) { - $ret->options = OptionsArray::parse($parser, $list, static::$KEY_OPTIONS); - ++$list->idx; - break; - } - } - - --$list->idx; - return $ret; - } - - /** - * @param Key $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - $ret = $component->type . ' '; - if (!empty($component->name)) { - $ret .= Context::escape($component->name) . ' '; - } - - $columns = array(); - foreach ($component->columns as $column) { - $tmp = Context::escape($column['name']); - if (isset($column['length'])) { - $tmp .= '(' . $column['length'] . ')'; - } - $columns[] = $tmp; - } - - $ret .= '(' . implode(',', $columns) . ') ' . $component->options; - return trim($ret); - } -} diff --git a/libraries/sql-parser/src/Components/Limit.php b/libraries/sql-parser/src/Components/Limit.php deleted file mode 100644 index c6b3290cab..0000000000 --- a/libraries/sql-parser/src/Components/Limit.php +++ /dev/null @@ -1,136 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Limit extends Component -{ - - /** - * The number of rows skipped. - * - * @var int - */ - public $offset; - - /** - * The number of rows to be returned. - * - * @var int - */ - public $rowCount; - - /** - * Constructor. - * - * @param int $rowCount The row count. - * @param int $offset The offset. - */ - public function __construct($rowCount = 0, $offset = 0) - { - $this->rowCount = $rowCount; - $this->offset = $offset; - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return Limit - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new Limit(); - - $offset = false; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { - break; - } - - if (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'OFFSET')) { - if ($offset) { - $parser->error(__('An offset was expected.'), $token); - } - $offset = true; - continue; - } - - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { - $ret->offset = $ret->rowCount; - $ret->rowCount = 0; - continue; - } - - if ($offset) { - $ret->offset = $token->value; - $offset = false; - } else { - $ret->rowCount = $token->value; - } - } - - if ($offset) { - $parser->error( - __('An offset was expected.'), - $list->tokens[$list->idx - 1] - ); - } - - --$list->idx; - return $ret; - } - - /** - * @param Limit $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (empty($component->offset)) { - return $component->rowCount; - } else { - return $component->offset . ', ' . $component->rowCount; - } - } -} diff --git a/libraries/sql-parser/src/Components/OptionsArray.php b/libraries/sql-parser/src/Components/OptionsArray.php deleted file mode 100644 index 229b350110..0000000000 --- a/libraries/sql-parser/src/Components/OptionsArray.php +++ /dev/null @@ -1,345 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class OptionsArray extends Component -{ - - /** - * ArrayObj of selected options. - * - * @var array - */ - public $options = array(); - - /** - * Constructor. - * - * @param array $options The array of options. Options that have a value - * must be an array with at least two keys `name` and - * `expr` or `value`. - */ - public function __construct(array $options = array()) - { - $this->options = $options; - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return OptionsArray - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new OptionsArray(); - - /** - * The ID that will be assigned to duplicate options. - * - * @var int $lastAssignedId - */ - $lastAssignedId = count($options) + 1; - - /** - * The option that was processed last time. - * - * @var array $lastOption - */ - $lastOption = null; - - /** - * The index of the option that was processed last time. - * - * @var int $lastOptionId - */ - $lastOptionId = 0; - - /** - * Counts brackets. - * - * @var int $brackets - */ - $brackets = 0; - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ---------------------[ option ]----------------------> 1 - * - * 1 -------------------[ = (optional) ]------------------> 2 - * - * 2 ----------------------[ value ]----------------------> 0 - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping comments. - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - // Skipping whitespace if not parsing value. - if (($token->type === Token::TYPE_WHITESPACE) && ($brackets === 0)) { - continue; - } - - if ($lastOption === null) { - $upper = strtoupper($token->token); - if (isset($options[$upper])) { - $lastOption = $options[$upper]; - $lastOptionId = is_array($lastOption) ? - $lastOption[0] : $lastOption; - $state = 0; - - // Checking for option conflicts. - // For example, in `SELECT` statements the keywords `ALL` - // and `DISTINCT` conflict and if used together, they - // produce an invalid query. - // - // Usually, tokens can be identified in the array by the - // option ID, but if conflicts occur, a generated option ID - // is used. - // - // The first pseudo duplicate ID is the maximum value of the - // real options (e.g. if there are 5 options, the first - // fake ID is 6). - if (isset($ret->options[$lastOptionId])) { - $parser->error( - sprintf( - __('This option conflicts with "%1$s".'), - is_array($ret->options[$lastOptionId]) - ? $ret->options[$lastOptionId]['name'] - : $ret->options[$lastOptionId] - ), - $token - ); - $lastOptionId = $lastAssignedId++; - } - } else { - // There is no option to be processed. - break; - } - } - - if ($state === 0) { - if (!is_array($lastOption)) { - // This is a just keyword option without any value. - // This is the beginning and the end of it. - $ret->options[$lastOptionId] = $token->value; - $lastOption = null; - $state = 0; - } elseif (($lastOption[1] === 'var') || ($lastOption[1] === 'var=')) { - // This is a keyword that is followed by a value. - // This is only the beginning. The value is parsed in state - // 1 and 2. State 1 is used to skip the first equals sign - // and state 2 to parse the actual value. - $ret->options[$lastOptionId] = array( - // @var string The name of the option. - 'name' => $token->value, - // @var bool Whether it contains an equal sign. - // This is used by the builder to rebuild it. - 'equals' => $lastOption[1] === 'var=', - // @var string Raw value. - 'expr' => '', - // @var string Processed value. - 'value' => '', - ); - $state = 1; - } elseif ($lastOption[1] === 'expr') { - // This is a keyword that is followed by an expression. - // The expression is used by the specialized parser. - - // Skipping this option in order to parse the expression. - ++$list->idx; - $ret->options[$lastOptionId] = array( - // @var string The name of the option. - 'name' => $token->value, - // @var Expression The parsed expression. - 'expr' => null, - ); - $state = 1; - } - } elseif ($state === 1) { - $state = 2; - if ($token->token === '=') { - $ret->options[$lastOptionId]['equals'] = true; - continue; - } - } - - // This is outside the `elseif` group above because the change might - // change this iteration. - if ($state === 2) { - if ($lastOption[1] === 'expr') { - $ret->options[$lastOptionId]['expr'] = Expression::parse( - $parser, - $list, - empty($lastOption[2]) ? array() : $lastOption[2] - ); - $ret->options[$lastOptionId]['value'] - = $ret->options[$lastOptionId]['expr']->expr; - $lastOption = null; - $state = 0; - } else { - if ($token->token === '(') { - ++$brackets; - } elseif ($token->token === ')') { - --$brackets; - } - - $ret->options[$lastOptionId]['expr'] .= $token->token; - - if (!((($token->token === '(') && ($brackets === 1)) - || (($token->token === ')') && ($brackets === 0))) - ) { - // First pair of brackets is being skipped. - $ret->options[$lastOptionId]['value'] .= $token->value; - } - - // Checking if we finished parsing. - if ($brackets === 0) { - $lastOption = null; - } - } - } - } - - if (empty($options['_UNSORTED'])) { - ksort($ret->options); - } - - --$list->idx; - return $ret; - } - - /** - * @param OptionsArray $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (empty($component->options)) { - return ''; - } - - $options = array(); - foreach ($component->options as $option) { - if (!is_array($option)) { - $options[] = $option; - } else { - $options[] = $option['name'] - . (!empty($option['equals']) ? '=' : ' ') - . (!empty($option['expr']) ? $option['expr'] : $option['value']); - } - } - return implode(' ', $options); - } - - /** - * Checks if it has the specified option and returns it value or true. - * - * @param string $key The key to be checked. - * @param bool $getExpr Gets the expression instead of the value. - * The value is the processed form of the expression. - * - * @return mixed - */ - public function has($key, $getExpr = false) - { - foreach ($this->options as $option) { - if ($key === $option) { - return true; - } elseif ((is_array($option)) && ($key === $option['name'])) { - return $getExpr ? $option['expr'] : $option['value']; - } - } - return false; - } - - /** - * Removes the option from the array. - * - * @param string $key The key to be removed. - * - * @return bool Whether the key was found and deleted or not. - */ - public function remove($key) - { - foreach ($this->options as $idx => $option) { - if (($key === $option) - || ((is_array($option)) && ($key === $option['name'])) - ) { - unset($this->options[$idx]); - return true; - } - } - return false; - } - - /** - * Merges the specified options with these ones. Values with same ID will be - * replaced. - * - * @param array|OptionsArray $options The options to be merged. - * - * @return void - */ - public function merge($options) - { - if (is_array($options)) { - $this->options = array_merge_recursive($this->options, $options); - } elseif ($options instanceof OptionsArray) { - $this->options = array_merge_recursive($this->options, $options->options); - } - } - - /** - * Checks tf there are no options set. - * - * @return bool - */ - public function isEmpty() - { - return empty($this->options); - } -} diff --git a/libraries/sql-parser/src/Components/OrderKeyword.php b/libraries/sql-parser/src/Components/OrderKeyword.php deleted file mode 100644 index fc226f0446..0000000000 --- a/libraries/sql-parser/src/Components/OrderKeyword.php +++ /dev/null @@ -1,141 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class OrderKeyword extends Component -{ - - /** - * The expression that is used for ordering. - * - * @var Expression - */ - public $expr; - - /** - * The order type. - * - * @var string - */ - public $type; - - /** - * Constructor. - * - * @param Expression $expr The expression that we are sorting by. - * @param string $type The sorting type. - */ - public function __construct($expr = null, $type = 'ASC') - { - $this->expr = $expr; - $this->type = $type; - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return OrderKeyword[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - $expr = new OrderKeyword(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 --------------------[ expression ]-------------------> 1 - * - * 1 ------------------------[ , ]------------------------> 0 - * 1 -------------------[ ASC / DESC ]--------------------> 1 - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $expr->expr = Expression::parse($parser, $list); - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_KEYWORD) && (($token->value === 'ASC') || ($token->value === 'DESC'))) { - $expr->type = $token->value; - } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { - if (!empty($expr->expr)) { - $ret[] = $expr; - } - $expr = new OrderKeyword(); - $state = 0; - } else { - break; - } - } - - } - - // Last iteration was not processed. - if (!empty($expr->expr)) { - $ret[] = $expr; - } - - --$list->idx; - return $ret; - } - - /** - * @param OrderKeyword|OrderKeyword[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return implode(', ', $component); - } else { - return $component->expr . ' ' . $component->type; - } - } -} diff --git a/libraries/sql-parser/src/Components/ParameterDefinition.php b/libraries/sql-parser/src/Components/ParameterDefinition.php deleted file mode 100644 index aea8f9c199..0000000000 --- a/libraries/sql-parser/src/Components/ParameterDefinition.php +++ /dev/null @@ -1,161 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ParameterDefinition extends Component -{ - - /** - * The name of the new column. - * - * @var string - */ - public $name; - - /** - * Parameter's direction (IN, OUT or INOUT). - * - * @var string - */ - public $inOut; - - /** - * The data type of thew new column. - * - * @var DataType - */ - public $type; - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return ParameterDefinition[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - $expr = new ParameterDefinition(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------------[ ( ]------------------------> 1 - * - * 1 ----------------[ IN / OUT / INOUT ]----------------> 1 - * 1 ----------------------[ name ]----------------------> 2 - * - * 2 -------------------[ data type ]--------------------> 3 - * - * 3 ------------------------[ , ]-----------------------> 1 - * 3 ------------------------[ ) ]-----------------------> (END) - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $state = 1; - } - continue; - } elseif ($state === 1) { - if (($token->value === 'IN') || ($token->value === 'OUT') || ($token->value === 'INOUT')) { - $expr->inOut = $token->value; - ++$list->idx; - } elseif ($token->value === ')') { - ++$list->idx; - break; - } else { - $expr->name = $token->value; - $state = 2; - } - } elseif ($state === 2) { - $expr->type = DataType::parse($parser, $list); - $state = 3; - } elseif ($state === 3) { - $ret[] = $expr; - $expr = new ParameterDefinition(); - if ($token->value === ',') { - $state = 1; - } elseif ($token->value === ')') { - ++$list->idx; - break; - } - } - } - - // Last iteration was not saved. - if ((isset($expr->name)) && ($expr->name !== '')) { - $ret[] = $expr; - } - - --$list->idx; - return $ret; - } - - /** - * @param ParameterDefinition[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return '(' . implode(', ', $component) . ')'; - } else { - $tmp = ''; - if (!empty($component->inOut)) { - $tmp .= $component->inOut . ' '; - } - - return trim( - $tmp . Context::escape($component->name) . ' ' . $component->type - ); - } - } -} diff --git a/libraries/sql-parser/src/Components/PartitionDefinition.php b/libraries/sql-parser/src/Components/PartitionDefinition.php deleted file mode 100644 index 06dc5fc0d8..0000000000 --- a/libraries/sql-parser/src/Components/PartitionDefinition.php +++ /dev/null @@ -1,224 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class PartitionDefinition extends Component -{ - - /** - * All field options. - * - * @var array - */ - public static $OPTIONS = array( - 'STORAGE ENGINE' => array(1, 'var'), - 'ENGINE' => array(1, 'var'), - 'COMMENT' => array(2, 'var'), - 'DATA DIRECTORY' => array(3, 'var'), - 'INDEX DIRECTORY' => array(4, 'var'), - 'MAX_ROWS' => array(5, 'var'), - 'MIN_ROWS' => array(6, 'var'), - 'TABLESPACE' => array(7, 'var'), - 'NODEGROUP' => array(8, 'var'), - ); - - /** - * Whether this entry is a subpartition or a partition. - * - * @var bool - */ - public $isSubpartition; - - /** - * The name of this partition. - * - * @var string - */ - public $name; - - /** - * The type of this partition (what follows the `VALUES` keyword). - * - * @var string - */ - public $type; - - /** - * The expression used to defined this partition. - * - * @var Expression|string - */ - public $expr; - - /** - * The subpartitions of this partition. - * - * @var PartitionDefinition[] - */ - public $subpartitions; - - /** - * The options of this field. - * - * @var OptionsArray - */ - public $options; - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return PartitionDefinition - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new PartitionDefinition(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -------------[ PARTITION | SUBPARTITION ]------------> 1 - * - * 1 -----------------------[ name ]----------------------> 2 - * - * 2 ----------------------[ VALUES ]---------------------> 3 - * - * 3 ---------------------[ LESS THAN ]-------------------> 4 - * 3 ------------------------[ IN ]-----------------------> 4 - * - * 4 -----------------------[ expr ]----------------------> 5 - * - * 5 ----------------------[ options ]--------------------> 6 - * - * 6 ------------------[ subpartitions ]------------------> (END) - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->isSubpartition = ($token->type === Token::TYPE_KEYWORD) && ($token->value === 'SUBPARTITION'); - $state = 1; - } elseif ($state === 1) { - $ret->name = $token->value; - - // Looking ahead for a 'VALUES' keyword. - $idx = $list->idx; - $list->getNext(); - $nextToken = $list->getNext(); - $list->idx = $idx; - - $state = ($nextToken->type === Token::TYPE_KEYWORD) - && ($nextToken->value === 'VALUES') - ? 2 : 5; - } elseif ($state === 2) { - $state = 3; - } elseif ($state === 3) { - $ret->type = $token->value; - $state = 4; - } elseif ($state === 4) { - if ($token->value === 'MAXVALUE') { - $ret->expr = $token->value; - } else { - $ret->expr = Expression::parse( - $parser, - $list, - array( - 'parenthesesDelimited' => true, - 'breakOnAlias' => true, - ) - ); - } - $state = 5; - } elseif ($state === 5) { - $ret->options = OptionsArray::parse($parser, $list, static::$OPTIONS); - $state = 6; - } elseif ($state === 6) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - $ret->subpartitions = ArrayObj::parse( - $parser, - $list, - array( - 'type' => 'SqlParser\\Components\\PartitionDefinition' - ) - ); - ++$list->idx; - } - break; - } - } - - --$list->idx; - return $ret; - } - - /** - * @param PartitionDefinition|PartitionDefinition[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return "(\n" . implode(",\n", $component) . "\n)"; - } else { - if ($component->isSubpartition) { - return trim('SUBPARTITION ' . $component->name . ' ' . $component->options); - } else { - $subpartitions = empty($component->subpartitions) - ? '' : ' ' . PartitionDefinition::build($component->subpartitions); - return trim( - 'PARTITION ' . $component->name - . (empty($component->type) ? '' : ' VALUES ' . $component->type . ' ' . $component->expr) - . $component->options . $subpartitions - ); - } - } - } -} diff --git a/libraries/sql-parser/src/Components/Reference.php b/libraries/sql-parser/src/Components/Reference.php deleted file mode 100644 index 7acd92e042..0000000000 --- a/libraries/sql-parser/src/Components/Reference.php +++ /dev/null @@ -1,158 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Reference extends Component -{ - - /** - * All references options. - * - * @var array - */ - public static $REFERENCES_OPTIONS = array( - 'MATCH' => array(1, 'var'), - 'ON DELETE' => array(2, 'var'), - 'ON UPDATE' => array(3, 'var'), - ); - - /** - * The referenced table. - * - * @var Expression - */ - public $table; - - /** - * The referenced columns. - * - * @var array - */ - public $columns; - - /** - * The options of the referencing. - * - * @var OptionsArray - */ - public $options; - - /** - * Constructor. - * - * @param Expression $table The name of the table referenced. - * @param array $columns The columns referenced. - * @param OptionsArray $options The options. - */ - public function __construct($table = null, array $columns = array(), $options = null) - { - $this->table = $table; - $this->columns = $columns; - $this->options = $options; - } - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return Reference - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = new Reference(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ----------------------[ table ]---------------------> 1 - * - * 1 ---------------------[ columns ]--------------------> 2 - * - * 2 ---------------------[ options ]--------------------> (END) - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $ret->table = Expression::parse( - $parser, - $list, - array( - 'parseField' => 'table', - 'breakOnAlias' => true, - ) - ); - $state = 1; - } elseif ($state === 1) { - $ret->columns = ArrayObj::parse($parser, $list)->values; - $state = 2; - } elseif ($state === 2) { - $ret->options = OptionsArray::parse($parser, $list, static::$REFERENCES_OPTIONS); - ++$list->idx; - break; - } - - } - - --$list->idx; - return $ret; - } - - /** - * @param Reference $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - return trim( - $component->table - . ' (' . implode(', ', Context::escape($component->columns)) . ') ' - . $component->options - ); - } -} diff --git a/libraries/sql-parser/src/Components/RenameOperation.php b/libraries/sql-parser/src/Components/RenameOperation.php deleted file mode 100644 index c0ecf6c01b..0000000000 --- a/libraries/sql-parser/src/Components/RenameOperation.php +++ /dev/null @@ -1,174 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class RenameOperation extends Component -{ - - /** - * The old table name. - * - * @var Expression - */ - public $old; - - /** - * The new table name. - * - * @var Expression - */ - public $new; - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return RenameOperation[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - $expr = new RenameOperation(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 ---------------------[ old name ]--------------------> 1 - * - * 1 ------------------------[ TO ]-----------------------> 2 - * - * 2 ---------------------[ old name ]--------------------> 3 - * - * 3 ------------------------[ , ]------------------------> 0 - * 3 -----------------------[ else ]----------------------> (END) - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $expr->old = Expression::parse( - $parser, - $list, - array( - 'breakOnAlias' => true, - 'parseField' => 'table', - ) - ); - if (empty($expr->old)) { - $parser->error( - __('The old name of the table was expected.'), - $token - ); - } - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'TO')) { - $state = 2; - } else { - $parser->error( - __('Keyword "TO" was expected.'), - $token - ); - break; - } - } elseif ($state === 2) { - $expr->new = Expression::parse( - $parser, - $list, - array( - 'breakOnAlias' => true, - 'parseField' => 'table', - ) - ); - if (empty($expr->new)) { - $parser->error( - __('The new name of the table was expected.'), - $token - ); - } - $state = 3; - } elseif ($state === 3) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { - $ret[] = $expr; - $expr = new RenameOperation(); - $state = 0; - } else { - break; - } - } - } - - if ($state !== 3) { - $parser->error( - __('A rename operation was expected.'), - $list->tokens[$list->idx - 1] - ); - } - - // Last iteration was not saved. - if (!empty($expr->old)) { - $ret[] = $expr; - } - - --$list->idx; - return $ret; - } - - /** - * @param RenameOperation $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return implode(', ', $component); - } else { - return $component->old . ' TO ' . $component->new; - } - } -} diff --git a/libraries/sql-parser/src/Components/SetOperation.php b/libraries/sql-parser/src/Components/SetOperation.php deleted file mode 100644 index 9306d43995..0000000000 --- a/libraries/sql-parser/src/Components/SetOperation.php +++ /dev/null @@ -1,136 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class SetOperation extends Component -{ - - /** - * The name of the column that is being updated. - * - * @var string - */ - public $column; - - /** - * The new value. - * - * @var string - */ - public $value; - - /** - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return SetOperation[] - */ - public static function parse(Parser $parser, TokensList $list, array $options = array()) - { - $ret = array(); - - $expr = new SetOperation(); - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -------------------[ column name ]-------------------> 1 - * - * 1 ------------------------[ , ]------------------------> 0 - * 1 ----------------------[ value ]----------------------> 1 - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - // No keyword is expected. - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED) && ($state == 0)) { - break; - } - - if ($state === 0) { - if ($token->token === '=') { - $state = 1; - } elseif ($token->value !== ',') { - $expr->column .= $token->token; - } - } elseif ($state === 1) { - $tmp = Expression::parse( - $parser, - $list, - array( - 'breakOnAlias' => true, - ) - ); - if ($tmp == null) { - $expr = null; - break; - } - $expr->column = trim($expr->column); - $expr->value = $tmp->expr; - $ret[] = $expr; - $expr = new SetOperation(); - $state = 0; - } - } - - --$list->idx; - return $ret; - } - - /** - * @param SetOperation|SetOperation[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - if (is_array($component)) { - return implode(', ', $component); - } else { - return $component->column . ' = ' . $component->value; - } - } -} diff --git a/libraries/sql-parser/src/Components/UnionKeyword.php b/libraries/sql-parser/src/Components/UnionKeyword.php deleted file mode 100644 index 6286cd0542..0000000000 --- a/libraries/sql-parser/src/Components/UnionKeyword.php +++ /dev/null @@ -1,40 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class UnionKeyword extends Component -{ - - /** - * @param SelectStatement[] $component The component to be built. - * @param array $options Parameters for building. - * - * @return string - */ - public static function build($component, array $options = array()) - { - $tmp = array(); - foreach ($component as $component) { - $tmp[] = $component[0] . ' ' . $component[1]; - } - return implode(' ', $tmp); - } -} diff --git a/libraries/sql-parser/src/Context.php b/libraries/sql-parser/src/Context.php deleted file mode 100644 index a62fa16b9e..0000000000 --- a/libraries/sql-parser/src/Context.php +++ /dev/null @@ -1,545 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -abstract class Context -{ - - /** - * The maximum length of a keyword. - * - * @see static::$TOKEN_KEYWORD - * - * @var int - */ - const KEYWORD_MAX_LENGTH = 30; - - /** - * The maximum length of an operator. - * - * @see static::$TOKEN_OPERATOR - * - * @var int - */ - const OPERATOR_MAX_LENGTH = 4; - - /** - * The name of the default content. - * - * @var string - */ - public static $defaultContext = '\\SqlParser\\Contexts\\ContextMySql50700'; - - /** - * The name of the loaded context. - * - * @var string - */ - public static $loadedContext = '\\SqlParser\\Contexts\\ContextMySql50700'; - - /** - * The prefix concatenated to the context name when an incomplete class name - * is specified. - * - * @var string - */ - public static $contextPrefix = '\\SqlParser\\Contexts\\Context'; - - /** - * List of keywords. - * - * Because, PHP's associative arrays are basically hash tables, it is more - * efficient to store keywords as keys instead of values. - * - * The value associated to each keyword represents its flags. - * - * @see Token::FLAG_KEYWORD_* - * - * Elements are sorted by flags, length and keyword. - * - * @var array - */ - public static $KEYWORDS = array(); - - /** - * List of operators and their flags. - * - * @var array - */ - public static $OPERATORS = array( - - // Some operators (*, =) may have ambiguous flags, because they depend on - // the context they are being used in. - // For example: 1. SELECT * FROM table; # SQL specific (wildcard) - // SELECT 2 * 3; # arithmetic - // 2. SELECT * FROM table WHERE foo = 'bar'; - // SET @i = 0; - - // @see Token::FLAG_OPERATOR_ARITHMETIC - '%' => 1, '*' => 1, '+' => 1, '-' => 1, '/' => 1, - - // @see Token::FLAG_OPERATOR_LOGICAL - '!' => 2, '!=' => 2, '&&' => 2, '<' => 2, '<=' => 2, - '<=>' => 2, '<>' => 2, '=' => 2, '>' => 2, '>=' => 2, - '||' => 2, - - // @see Token::FLAG_OPERATOR_BITWISE - '&' => 4, '<<' => 4, '>>' => 4, '^' => 4, '|' => 4, - '~' => 4, - - // @see Token::FLAG_OPERATOR_ASSIGNMENT - ':=' => 8, - - // @see Token::FLAG_OPERATOR_SQL - '(' => 16, ')' => 16, '.' => 16, ',' => 16, ';' => 16, - ); - - /** - * The mode of the MySQL server that will be used in lexing, parsing and - * building the statements. - * - * @var int - */ - public static $MODE = 0; - - /* - * Server SQL Modes - * https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html - */ - - // Compatibility mode for Microsoft's SQL server. - // This is the equivalent of ANSI_QUOTES. - const COMPAT_MYSQL = 2; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_allow_invalid_dates - const ALLOW_INVALID_DATES = 1; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_ansi_quotes - const ANSI_QUOTES = 2; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_error_for_division_by_zero - const ERROR_FOR_DIVISION_BY_ZERO = 4; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_high_not_precedence - const HIGH_NOT_PRECEDENCE = 8; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_ignore_space - const IGNORE_SPACE = 16; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_auto_create_user - const NO_AUTO_CREATE_USER = 32; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_auto_value_on_zero - const NO_AUTO_VALUE_ON_ZERO = 64; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_backslash_escapes - const NO_BACKSLASH_ESCAPES = 128; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_dir_in_create - const NO_DIR_IN_CREATE = 256; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_dir_in_create - const NO_ENGINE_SUBSTITUTION = 512; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_field_options - const NO_FIELD_OPTIONS = 1024; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_key_options - const NO_KEY_OPTIONS = 2048; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_table_options - const NO_TABLE_OPTIONS = 4096; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_unsigned_subtraction - const NO_UNSIGNED_SUBTRACTION = 8192; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_zero_date - const NO_ZERO_DATE = 16384; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_zero_in_date - const NO_ZERO_IN_DATE = 32768; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_only_full_group_by - const ONLY_FULL_GROUP_BY = 65536; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_pipes_as_concat - const PIPES_AS_CONCAT = 131072; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_real_as_float - const REAL_AS_FLOAT = 262144; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_all_tables - const STRICT_ALL_TABLES = 524288; - - // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_trans_tables - const STRICT_TRANS_TABLES = 1048576; - - // Custom modes. - - // The table and column names and any other field that must be escaped will - // not be. - // Reserved keywords are being escaped regardless this mode is used or not. - const NO_ENCLOSING_QUOTES = 1073741824; - - /* - * Combination SQL Modes - * https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sql-mode-combo - */ - - // REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE - const SQL_MODE_ANSI = 393234; - - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, - const SQL_MODE_DB2 = 138258; - - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER - const SQL_MODE_MAXDB = 138290; - - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS - const SQL_MODE_MSSQL = 138258; - - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER - const SQL_MODE_ORACLE = 138290; - - // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, - // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS - const SQL_MODE_POSTGRESQL = 138258; - - // STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, - // ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER - const SQL_MODE_TRADITIONAL = 1622052; - - // ------------------------------------------------------------------------- - // Keyword. - - /** - * Checks if the given string is a keyword. - * - * @param string $str String to be checked. - * @param bool $isReserved Checks if the keyword is reserved. - * - * @return int - */ - public static function isKeyword($str, $isReserved = false) - { - $str = strtoupper($str); - - if (isset(static::$KEYWORDS[$str])) { - if ($isReserved) { - if (!(static::$KEYWORDS[$str] & Token::FLAG_KEYWORD_RESERVED)) { - return null; - } - } - return static::$KEYWORDS[$str]; - } - - return null; - } - - // ------------------------------------------------------------------------- - // Operator. - - /** - * Checks if the given string is an operator. - * - * @param string $str String to be checked. - * - * @return int The appropriate flag for the operator. - */ - public static function isOperator($str) - { - if (!isset(static::$OPERATORS[$str])) { - return null; - } - return static::$OPERATORS[$str]; - } - - // ------------------------------------------------------------------------- - // Whitespace. - - /** - * Checks if the given character is a whitespace. - * - * @param string $str String to be checked. - * - * @return bool - */ - public static function isWhitespace($str) - { - return ($str === ' ') || ($str === "\r") || ($str === "\n") || ($str === "\t"); - } - - // ------------------------------------------------------------------------- - // Comment. - - /** - * Checks if the given string is the beginning of a whitespace. - * - * @param string $str String to be checked. - * - * @return int The appropriate flag for the comment type. - */ - public static function isComment($str) - { - $len = strlen($str); - if ($str[0] === '#') { - return Token::FLAG_COMMENT_BASH; - } elseif (($len > 1) && ($str[0] === '/') && ($str[1] === '*')) { - return (($len > 2) && ($str[2] == '!')) ? - Token::FLAG_COMMENT_MYSQL_CMD : Token::FLAG_COMMENT_C; - } elseif (($len > 1) && ($str[0] === '*') && ($str[1] === '/')) { - return Token::FLAG_COMMENT_C; - } elseif (($len > 2) && ($str[0] === '-') - && ($str[1] === '-') && (static::isWhitespace($str[2])) - ) { - return Token::FLAG_COMMENT_SQL; - } - return null; - } - - // ------------------------------------------------------------------------- - // Bool. - - /** - * Checks if the given string is a boolean value. - * This actually check only for `TRUE` and `FALSE` because `1` or `0` are - * actually numbers and are parsed by specific methods. - * - * @param string $str String to be checked. - * - * @return bool - */ - public static function isBool($str) - { - $str = strtoupper($str); - return ($str === 'TRUE') || ($str === 'FALSE'); - } - - // ------------------------------------------------------------------------- - // Number. - - /** - * Checks if the given character can be a part of a number. - * - * @param string $str String to be checked. - * - * @return bool - */ - public static function isNumber($str) - { - return (($str >= '0') && ($str <= '9')) || ($str === '.') - || ($str === '-') || ($str === '+') || ($str === 'e') || ($str === 'E'); - } - - // ------------------------------------------------------------------------- - // Symbol. - - /** - * Checks if the given character is the beginning of a symbol. A symbol - * can be either a variable or a field name. - * - * @param string $str String to be checked. - * - * @return int The appropriate flag for the symbol type. - */ - public static function isSymbol($str) - { - if ($str[0] === '@') { - return Token::FLAG_SYMBOL_VARIABLE; - } elseif ($str[0] === '`') { - return Token::FLAG_SYMBOL_BACKTICK; - } - return null; - } - - // ------------------------------------------------------------------------- - // String. - - /** - * Checks if the given character is the beginning of a string. - * - * @param string $str String to be checked. - * - * @return int The appropriate flag for the string type. - */ - public static function isString($str) - { - if ($str[0] === '\'') { - return Token::FLAG_STRING_SINGLE_QUOTES; - } elseif ($str[0] === '"') { - return Token::FLAG_STRING_DOUBLE_QUOTES; - } - return null; - } - - // ------------------------------------------------------------------------- - // Delimiter. - - /** - * Checks if the given character can be a separator for two lexeme. - * - * @param string $str String to be checked. - * - * @return bool - */ - public static function isSeparator($str) - { - // NOTES: Only non alphanumeric ASCII characters may be separators. - // `~` is the last printable ASCII character. - return ($str <= '~') && ($str !== '_') - && (($str < '0') || ($str > '9')) - && (($str < 'a') || ($str > 'z')) - && (($str < 'A') || ($str > 'Z')); - } - - /** - * Loads the specified context. - * - * Contexts may be used by accessing the context directly. - * - * @param string $context Name of the context or full class name that - * defines the context. - * - * @throws \Exception If the specified context doesn't exist. - * - * @return void - */ - public static function load($context = '') - { - if (empty($context)) { - $context = self::$defaultContext; - } - if ($context[0] !== '\\') { - // Short context name (must be formatted into class name). - $context = self::$contextPrefix . $context; - } - if (!class_exists($context)) { - throw new \Exception( - 'Specified context ("' . $context . '") does not exist.' - ); - } - self::$loadedContext = $context; - self::$KEYWORDS = $context::$KEYWORDS; - } - - /** - * Loads the context with the closest version to the one specified. - * - * The closest context is found by replacing last digits with zero until one - * is loaded successfully. - * - * @see Context::load() - * - * @param string $context Name of the context or full class name that - * defines the context. - * - * @return string The loaded context. `null` if no context was loaded. - */ - public static function loadClosest($context = '') - { - /** - * The number of replaces done by `preg_replace`. - * This actually represents whether a new context was generated or not. - * - * @var int $count - */ - $count = 0; - - // As long as a new context can be generated, we try to load it. - do { - try { - // Trying to load the new context. - static::load($context); - } catch (\Exception $e) { - // If it didn't work, we are looking for a new one and skipping - // over to the next generation that will try the new context. - $context = preg_replace( - '/[1-9](0*)$/', - '0$1', - $context, - -1, - $count - ); - continue; - } - - // Last generated context was valid (did not throw any exceptions). - // So we return it, to let the user know what context was loaded. - return $context; - } while ($count !== 0); - - return null; - } - - /** - * Sets the SQL mode. - * - * @param string $mode The list of modes. If empty, the mode is reset. - * - * @return void - */ - public static function setMode($mode = '') - { - static::$MODE = 0; - if (empty($mode)) { - return; - } - $mode = explode(',', $mode); - foreach ($mode as $m) { - static::$MODE |= constant('static::' . $m); - } - } - - /** - * Escapes the symbol by adding surrounding backticks. - * - * @param array|string $str The string to be escaped. - * @param string $quote Quote to be used when escaping. - * - * @return string - */ - public static function escape($str, $quote = '`') - { - if (is_array($str)) { - foreach ($str as $key => $value) { - $str[$key] = static::escape($value); - } - return $str; - } - - if ((static::$MODE & Context::NO_ENCLOSING_QUOTES) - && (!static::isKeyword($str, true)) - ) { - return $str; - } - - if (static::$MODE & Context::ANSI_QUOTES) { - $quote = '"'; - } - - return $quote . str_replace($quote, $quote . $quote, $str) . $quote; - } -} - -// Initializing the default context. -Context::load(); diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50000.php b/libraries/sql-parser/src/Contexts/ContextMySql50000.php deleted file mode 100644 index 91f1179e0d..0000000000 --- a/libraries/sql-parser/src/Contexts/ContextMySql50000.php +++ /dev/null @@ -1,281 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ContextMySql50000 extends Context -{ - - /** - * List of keywords. - * - * The value associated to each keyword represents its flags. - * - * @see Token::FLAG_KEYWORD_* - * - * @var array - */ - public static $KEYWORDS = array( - - 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'BDB' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, - 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'FAST' => 1, - 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'LAST' => 1, 'LOGS' => 1, - 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'TYPE' => 1, 'VIEW' => 1, - 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, - 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, - 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'PHASE' => 1, - 'QUERY' => 1, 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, - 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, - 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, - 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'RELOAD' => 1, - 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, - 'SOUNDS' => 1, 'SOURCE' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, - 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, - 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, - 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INVOKER' => 1, 'MIGRATE' => 1, - 'PARTIAL' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'RECOVER' => 1, 'RESTORE' => 1, - 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'STRIPED' => 1, - 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, - 'USE_FRM' => 1, 'VIRTUAL' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, - 'FUNCTION' => 1, 'GEOMETRY' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, - 'MAX_ROWS' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, - 'ONE_SHOT' => 1, 'PROFILES' => 1, 'ROLLBACK' => 1, 'SECURITY' => 1, - 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, - 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'PACK_KEYS' => 1, 'RAID_TYPE' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, - 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, - 'VARIABLES' => 1, - 'BERKELEYDB' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, - 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, - 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, 'SQL_TSI_DAY' => 1, - 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'DES_KEY_FILE' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, - 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, - 'SQL_TSI_YEAR' => 1, - 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, - 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'MASTER_LOG_POS' => 1, - 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, 'RELAY_LOG_FILE' => 1, - 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'USER_RESOURCES' => 1, - 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, - 'MASTER_SERVER_ID' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'SQL_TSI_FRAC_SECOND' => 1, - 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, - 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, - 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, - 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'OPTION' => 3, 'REGEXP' => 3, - 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SONAME' => 3, - 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, - 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, - 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, - 'OPTIONALLY' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, - 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'UNION ALL' => 7, - 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, - 'RIGHT JOIN' => 7, - 'LINEAR HASH' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'PARTITION BY' => 7, - 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, - 'DATA DIRECTORY' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'START TRANSACTION' => 7, - 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'MULTISET' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, - 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, - 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, - 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POINT' => 33, 'POWER' => 33, - 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, - 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, - 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, - 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, - 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'POLYGON' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, - 'SOUNDEX' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, - 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, - 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'SUBSTRING' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'LINESTRING' => 33, - 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, - 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'GEOMETRYTYPE' => 33, - 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, - 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, - 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, - 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, - 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, - 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, - 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, - 'TIMESTAMPDIFF' => 33, - 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'MULTILINESTRING' => 33, - 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, - 'GEOMETRYCOLLECTION' => 33, - 'UNCOMPRESSED_LENGTH' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'TIMESTAMP' => 41, - - 'CHAR' => 43, - 'INTERVAL' => 43, - - ); -} diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50100.php b/libraries/sql-parser/src/Contexts/ContextMySql50100.php deleted file mode 100644 index a62d2ecaf1..0000000000 --- a/libraries/sql-parser/src/Contexts/ContextMySql50100.php +++ /dev/null @@ -1,305 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ContextMySql50100 extends Context -{ - - /** - * List of keywords. - * - * The value associated to each keyword represents its flags. - * - * @see Token::FLAG_KEYWORD_* - * - * @var array - */ - public static $KEYWORDS = array( - - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'BDB' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, - 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'GOTO' => 1, 'HASH' => 1, - 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, - 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, - 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, - 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LABEL' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'QUERY' => 1, - 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, - 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, - 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, - 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, - 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, - 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, - 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, - 'STRING' => 1, 'TABLES' => 1, - 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, - 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, - 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STORAGE' => 1, 'STRIPED' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, 'INNOBASE' => 1, - 'LANGUAGE' => 1, 'MAXVALUE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, - 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, - 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'ROLLBACK' => 1, - 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, - 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'RAID_TYPE' => 1, - 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SCHEDULER' => 1, - 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, - 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'BERKELEYDB' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, - 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, - 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, - 'PRIVILEGES' => 1, 'REORGANISE' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, - 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, - 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, - 'MASTER_USER' => 1, 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, - 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, - 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, - 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, - 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'PAGE_CHECKSUM' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'TRANSACTIONAL' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, - 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'SQL_TSI_FRAC_SECOND' => 1, - 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, - 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, - 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, - 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, - 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, - 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'UNION ALL' => 7, - 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, - 'RIGHT JOIN' => 7, - 'LINEAR HASH' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'PARTITION BY' => 7, - 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, - 'DATA DIRECTORY' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'START TRANSACTION' => 7, - 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'MULTISET' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, - 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'DECOD' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, - 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, - 'MONTH' => 33, 'POINT' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, - 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, - 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'ENCODE' => 33, 'EQUALS' => 33, - 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, - 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, - 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'POLYGON' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, - 'SOUNDEX' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, - 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, - 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'SUBSTRING' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'LINESTRING' => 33, - 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, - 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, - 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, - 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, - 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, - 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, - 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, - 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, - 'TIMESTAMPDIFF' => 33, - 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, - 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'MULTILINESTRING' => 33, - 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'NUMINTERIORRINGS' => 33, - 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'GEOMETRYCOLLECTION' => 33, 'MULTIPOINTFROMTEXT' => 33, - 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'TIMESTAMP' => 41, - - 'CHAR' => 43, - 'INTERVAL' => 43, - - ); -} diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50500.php b/libraries/sql-parser/src/Contexts/ContextMySql50500.php deleted file mode 100644 index 03dd24f033..0000000000 --- a/libraries/sql-parser/src/Contexts/ContextMySql50500.php +++ /dev/null @@ -1,309 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ContextMySql50500 extends Context -{ - - /** - * List of keywords. - * - * The value associated to each keyword represents its flags. - * - * @see Token::FLAG_KEYWORD_* - * - * @var array - */ - public static $KEYWORDS = array( - - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, - 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, - 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, - 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, - 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, - 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, - 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, - 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, - 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, - 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, - 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, - 'STRING' => 1, 'TABLES' => 1, - 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, - 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, - 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, - 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, - 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, - 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, - 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, 'INNOBASE' => 1, - 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, - 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, - 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, - 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, - 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'READ_ONLY' => 1, - 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, - 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, - 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, - 'TABLESPACE' => 1, 'TABLE_NAME' => 1, - 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, - 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, - 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, - 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MESSAGE_TEXT' => 1, - 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, - 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, - 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, - 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, - 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, - 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, - 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, - 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, - 'CONSTRAINT_CATALOG' => 1, - 'SQL_TSI_FRAC_SECOND' => 1, - 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, - 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, - 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, - 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, - 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, - 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, - 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'UNION ALL' => 7, - 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, - 'RIGHT JOIN' => 7, - 'LINEAR HASH' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'PARTITION BY' => 7, - 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, - 'DATA DIRECTORY' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'START TRANSACTION' => 7, - 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'MULTISET' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, - 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POINT' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, - 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, - 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, - 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, - 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'POLYGON' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, - 'SOUNDEX' => 33, 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, - 'TO_DAYS' => 33, 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, - 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'SUBSTRING' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'LINESTRING' => 33, - 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, - 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, - 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, - 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, - 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, - 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, - 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, - 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, - 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, - 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, - 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, - 'TIMESTAMPDIFF' => 33, - 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, - 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'MULTILINESTRING' => 33, - 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'NUMINTERIORRINGS' => 33, - 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, - 'GEOMETRYCOLLECTION' => 33, 'MULTIPOINTFROMTEXT' => 33, - 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'TIMESTAMP' => 41, - - 'CHAR' => 43, - 'INTERVAL' => 43, - - ); -} diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50600.php b/libraries/sql-parser/src/Contexts/ContextMySql50600.php deleted file mode 100644 index 3773d233e2..0000000000 --- a/libraries/sql-parser/src/Contexts/ContextMySql50600.php +++ /dev/null @@ -1,340 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ContextMySql50600 extends Context -{ - - /** - * List of keywords. - * - * The value associated to each keyword represents its flags. - * - * @see Token::FLAG_KEYWORD_* - * - * @var array - */ - public static $KEYWORDS = array( - - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, - 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, - 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, - 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, - 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, - 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, - 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, - 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, - 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, - 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, - 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, - 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, - 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, - 'ANALYSE' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, - 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, - 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, - 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, - 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, - 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, - 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, - 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, - 'VIRTUAL' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, - 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, - 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, - 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, - 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, - 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, - 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, - 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, - 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, - 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, - 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, - 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, - 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, - 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, - 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, - 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, - 'SUBPARTITION' => 1, - 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, - 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, - 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, - 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, - 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, - 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, - 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, - 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, - 'MAX_USER_CONNECTIONS' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, - 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, - 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, - 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, - 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'MASTER_BIND' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'UNION ALL' => 7, - 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, - 'RIGHT JOIN' => 7, - 'LINEAR HASH' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'PARTITION BY' => 7, - 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, - 'DATA DIRECTORY' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'START TRANSACTION' => 7, - 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'MULTISET' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, - 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POINT' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, - 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, - 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, - 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, - 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'POLYGON' => 33, 'QUARTER' => 33, - 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, - 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, - 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, - 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, 'MAKEDATE' => 33, - 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, - 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, - 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, - 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, - 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, - 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, - 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, - 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_POINTN' => 33, - 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, - 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, - 'INTERSECTS' => 33, 'LINESTRING' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, - 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, - 'ST_CROSSES' => 33, 'ST_ISEMPTY' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, - 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, - 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, - 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, - 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, - 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, - 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, - 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, - 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, - 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, - 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, - 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, - 'SESSION_USER' => 33, 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, - 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'CREATE_DIGEST' => 33, 'FROM_UNIXTIME' => 33, - 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, - 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, - 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_DIFFERENCE' => 33, - 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, - 'WEIGHT_STRING' => 33, - 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, - 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, - 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, - 'ASYMMETRIC_SIGN' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, - 'MULTILINESTRING' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, - 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, - 'ST_LINEFROMTEXT' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, - 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_NUMGEOMETRIES' => 33, - 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, - 'ASYMMETRIC_DERIVE' => 33, 'ASYMMETRIC_VERIFY' => 33, 'LINESTRINGFROMWKB' => 33, - 'MULTIPOINTFROMWKB' => 33, 'ST_POLYGONFROMWKB' => 33, - 'ASYMMETRIC_DECRYPT' => 33, 'ASYMMETRIC_ENCRYPT' => 33, 'GEOMETRYCOLLECTION' => 33, - 'MULTIPOINTFROMTEXT' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, - 'ST_POLYGONFROMTEXT' => 33, - 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, - 'ST_NUMINTERIORRINGS' => 33, 'UNCOMPRESSED_LENGTH' => 33, - 'CREATE_DH_PARAMETERS' => 33, 'MULTIPOLYGONFROMTEXT' => 33, - 'ST_LINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, - 'CREATE_ASYMMETRIC_PUB_KEY' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, - 'CREATE_ASYMMETRIC_PRIV_KEY' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'VALIDATE_PASSWORD_STRENGTH' => 33, - 'SQL_THREAD_WAIT_AFTER_GTIDS' => 33, - 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, - 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'TIMESTAMP' => 41, - - 'CHAR' => 43, - 'INTERVAL' => 43, - - ); -} diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50700.php b/libraries/sql-parser/src/Contexts/ContextMySql50700.php deleted file mode 100644 index c4867c2a7b..0000000000 --- a/libraries/sql-parser/src/Contexts/ContextMySql50700.php +++ /dev/null @@ -1,351 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ContextMySql50700 extends Context -{ - - /** - * List of keywords. - * - * The value associated to each keyword represents its flags. - * - * @see Token::FLAG_KEYWORD_* - * - * @var array - */ - public static $KEYWORDS = array( - - 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, - 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, - 'ONE' => 1, 'ROW' => 1, 'XID' => 1, - 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, - 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, - 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, - 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, - 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, - 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, - 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, - 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, - 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, - 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, - 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, - 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, - 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, - 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, - 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, - 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, - 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, - 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, - 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, - 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, - 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, - 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, - 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, - 'TABLES' => 1, - 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, - 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, - 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, - 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, - 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, - 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, - 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, - 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, - 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, - 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, - 'EXCHANGE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, 'GEOMETRY' => 1, - 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, - 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, - 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, - 'SCHEDULE' => 1, 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, - 'SWITCHES' => 1, 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, - 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, - 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, - 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, - 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, - 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, - 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, - 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, - 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, - 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, - 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, - 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, - 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, - 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, - 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, - 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, - 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, - 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, - 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, - 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, - 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, - 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, - 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, - 'MASTER_LOG_POS' => 1, 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, - 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, - 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, - 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, - 'FILE_BLOCK_SIZE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, - 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, 'REPLICATE_DO_DB' => 1, - 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, - 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, - 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, - 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, - 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, - 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, - 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, - 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, - 'STATS_SAMPLE_PAGES' => 1, - 'REPLICATE_IGNORE_DB' => 1, - 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, - 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, - 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, - 'REPLICATE_IGNORE_TABLE' => 1, - 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, - 'MAX_CONNECTIONS_PER_HOUR' => 1, - 'REPLICATE_WILD_IGNORE_TABLE' => 1, - - 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, - 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, - 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, - 'USE' => 3, 'XOR' => 3, - 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, - 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, - 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, - 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, - 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, - 'WHEN' => 3, 'WITH' => 3, - 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, - 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, - 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, - 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, - 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, - 'WRITE' => 3, - 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, - 'DELETE' => 3, 'ELSEIF' => 3, 'EXISTS' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, - 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, - 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, - 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, - 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, - 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, - 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, - 'REQUIRE' => 3, 'SCHEMAS' => 3, 'SPATIAL' => 3, 'TRIGGER' => 3, 'VARYING' => 3, - 'VIRTUAL' => 3, - 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, - 'ENCLOSED' => 3, 'FULLTEXT' => 3, 'MAXVALUE' => 3, 'MODIFIES' => 3, - 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, - 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, - 'ZEROFILL' => 3, - 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, - 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, - 'SEPARATOR' => 3, - 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, - 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, - 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, - 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, - 'MASTER_BIND' => 3, - 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, - 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, - 'STRAIGHT_JOIN' => 3, - 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, - 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, - 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, - 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, - 'SQL_CALC_FOUND_ROWS' => 3, - 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, - - 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, - 'LESS THAN' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'UNION ALL' => 7, - 'INNER JOIN' => 7, 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, - 'RIGHT JOIN' => 7, - 'LINEAR HASH' => 7, - 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'PARTITION BY' => 7, - 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, - 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, - 'DATA DIRECTORY' => 7, - 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, - 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, - 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, - 'START TRANSACTION' => 7, - 'SELECT TRANSACTION' => 7, - 'DEFAULT CHARACTER SET' => 7, - 'WITH CONSISTENT SNAPSHOT' => 7, - - 'BIT' => 9, 'XML' => 9, - 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, - 'ARRAY' => 9, - 'SERIAL' => 9, - 'BOOLEAN' => 9, - 'DATETIME' => 9, 'MULTISET' => 9, - - 'INT' => 11, 'SET' => 11, - 'BLOB' => 11, 'REAL' => 11, - 'FLOAT' => 11, - 'BIGINT' => 11, 'BINARY' => 11, 'DOUBLE' => 11, - 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, - 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, - 'TINYTEXT' => 11, - 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, - 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, - - 'BINARY VARYING' => 15, - - 'KEY' => 19, - 'INDEX' => 19, - 'UNIQUE' => 19, - - 'INDEX KEY' => 23, - 'UNIQUE KEY' => 23, - 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, - 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, - 'SPATIAL INDEX' => 23, - 'FULLTEXT INDEX' => 23, - - 'X' => 33, 'Y' => 33, - 'LN' => 33, 'PI' => 33, - 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, - 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, - 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, - 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, - 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, - 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, - 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, - 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, - 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, - 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, - 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, - 'POINT' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, - 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, - 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, - 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, - 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, - 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, - 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, - 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, - 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, - 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'POLYGON' => 33, 'QUARTER' => 33, - 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, - 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, - 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, - 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, - 'CONTAINS' => 33, 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, - 'DISJOINT' => 33, 'DISTANCE' => 33, 'ENDPOINT' => 33, 'ENVELOPE' => 33, - 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, - 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, - 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, - 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, - 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, - 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, - 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, - 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, - 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, 'MBREQUALS' => 33, 'MBRWITHIN' => 33, - 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, - 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_LENGTH' => 33, 'ST_POINTN' => 33, - 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, - 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, - 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, - 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'LINESTRING' => 33, 'MBRTOUCHES' => 33, - 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, - 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, - 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, - 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, - 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, - 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, - 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, - 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, - 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, - 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, - 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, - 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, - 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, - 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, - 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, - 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, - 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, - 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, - 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RANDOM_BYTES' => 33, - 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, - 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, - 'TIMESTAMPADD' => 33, - 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, - 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, - 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, - 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, 'ST_DIFFERENCE' => 33, - 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, - 'WEIGHT_STRING' => 33, - 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, - 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, - 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, - 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'MULTILINESTRING' => 33, - 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, - 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, - 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, - 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, - 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, - 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_MLINEFROMTEXT' => 33, - 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, 'ST_NUMGEOMETRIES' => 33, - 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, - 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, 'RELEASE_ALL_LOCKS' => 33, - 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, 'ST_POLYGONFROMWKB' => 33, - 'GEOMETRYCOLLECTION' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, - 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, - 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, - 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, - 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, 'UNCOMPRESSED_LENGTH' => 33, - 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, - 'ST_MULTIPOINTFROMWKB' => 33, - 'ST_MULTIPOINTFROMTEXT' => 33, - 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, - 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, - 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, - 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, - 'VALIDATE_PASSWORD_STRENGTH' => 33, 'WAIT_FOR_EXECUTED_GTID_SET' => 33, - 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, - 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, - 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, - - 'IF' => 35, 'IN' => 35, - 'MOD' => 35, - 'LEFT' => 35, - 'MATCH' => 35, 'RIGHT' => 35, - 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, - 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, - 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, - 'LOCALTIME' => 35, - 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, - 'UTC_TIMESTAMP' => 35, - 'LOCALTIMESTAMP' => 35, - 'CURRENT_TIMESTAMP' => 35, - - 'NOT IN' => 39, - - 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, - 'TIMESTAMP' => 41, - - 'CHAR' => 43, - 'INTERVAL' => 43, - - ); -} diff --git a/libraries/sql-parser/src/Exceptions/LexerException.php b/libraries/sql-parser/src/Exceptions/LexerException.php deleted file mode 100644 index 3bbc0c72cd..0000000000 --- a/libraries/sql-parser/src/Exceptions/LexerException.php +++ /dev/null @@ -1,51 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class LexerException extends \Exception -{ - - /** - * The character that produced this error. - * - * @var string - */ - public $ch; - - /** - * The index of the character that produced this error. - * - * @var int - */ - public $pos; - - /** - * Constructor. - * - * @param string $msg The message of this exception. - * @param string $ch The character that produced this exception. - * @param int $pos The position of the character. - * @param int $code The code of this error. - */ - public function __construct($msg = '', $ch = '', $pos = 0, $code = 0) - { - parent::__construct($msg, $code); - $this->ch = $ch; - $this->pos = $pos; - } -} diff --git a/libraries/sql-parser/src/Exceptions/ParserException.php b/libraries/sql-parser/src/Exceptions/ParserException.php deleted file mode 100644 index 5a9fac0442..0000000000 --- a/libraries/sql-parser/src/Exceptions/ParserException.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ParserException extends \Exception -{ - - /** - * The token that produced this error. - * - * @var Token - */ - public $token; - - /** - * Constructor. - * - * @param string $msg The message of this exception. - * @param Token $token The token that produced this exception. - * @param int $code The code of this error. - */ - public function __construct($msg = '', Token $token = null, $code = 0) - { - parent::__construct($msg, $code); - $this->token = $token; - } -} diff --git a/libraries/sql-parser/src/Lexer.php b/libraries/sql-parser/src/Lexer.php deleted file mode 100644 index 8c609db08f..0000000000 --- a/libraries/sql-parser/src/Lexer.php +++ /dev/null @@ -1,876 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - * @see Context - */ -class Lexer -{ - - /** - * A list of methods that are used in lexing the SQL query. - * - * @var array - */ - public static $PARSER_METHODS = array( - - // It is best to put the parsers in order of their complexity - // (ascending) and their occurrence rate (descending). - // - // Conflicts: - // - // 1. `parseDelimiter`, `parseUnknown`, `parseKeyword`, `parseNumber` - // They fight over delimiter. The delimiter may be a keyword, a - // number or almost any character which makes the delimiter one of - // the first tokens that must be parsed. - // - // 1. `parseNumber` and `parseOperator` - // They fight over `+` and `-`. - // - // 2. `parseComment` and `parseOperator` - // They fight over `/` (as in ```/*comment*/``` or ```a / b```) - // - // 3. `parseBool` and `parseKeyword` - // They fight over `TRUE` and `FALSE`. - // - // 4. `parseKeyword` and `parseUnknown` - // They fight over words. `parseUnknown` does not know about - // keywords. - - 'parseDelimiter', 'parseWhitespace', 'parseNumber', - 'parseComment', 'parseOperator', 'parseBool', 'parseString', - 'parseSymbol', 'parseKeyword', 'parseUnknown' - ); - - /** - * Whether errors should throw exceptions or just be stored. - * - * @var bool - * - * @see static::$errors - */ - public $strict = false; - - /** - * The string to be parsed. - * - * @var string|UtfString - */ - public $str = ''; - - /** - * The length of `$str`. - * - * By storing its length, a lot of time is saved, because parsing methods - * would call `strlen` everytime. - * - * @var int - */ - public $len = 0; - - /** - * The index of the last parsed character. - * - * @var int - */ - public $last = 0; - - /** - * Tokens extracted from given strings. - * - * @var TokensList - */ - public $list; - - /** - * The default delimiter. This is used, by default, in all new instances. - * - * @var string - */ - public static $DEFAULT_DELIMITER = ';'; - - /** - * Statements delimiter. - * This may change during lexing. - * - * @var string - */ - public $delimiter; - - /** - * The length of the delimiter. - * - * Because `parseDelimiter` can be called a lot, it would perform a lot of - * calls to `strlen`, which might affect performance when the delimiter is - * big. - * - * @var int - */ - public $delimiterLen; - - /** - * List of errors that occurred during lexing. - * - * Usually, the lexing does not stop once an error occurred because that - * error might be false positive or a partial result (even a bad one) - * might be needed. - * - * @var LexerException[] - * - * @see Lexer::error() - */ - public $errors = array(); - - /** - * Gets the tokens list parsed by a new instance of a lexer. - * - * @param string|UtfString $str The query to be lexed. - * @param bool $strict Whether strict mode should be - * enabled or not. - * @param string $delimiter The delimiter to be used. - * - * @return TokensList - */ - public static function getTokens($str, $strict = false, $delimiter = null) - { - $lexer = new Lexer($str, $strict, $delimiter); - return $lexer->list; - } - - /** - * Constructor. - * - * @param string|UtfString $str The query to be lexed. - * @param bool $strict Whether strict mode should be - * enabled or not. - * @param string $delimiter The delimiter to be used. - */ - public function __construct($str, $strict = false, $delimiter = null) - { - // `strlen` is used instead of `mb_strlen` because the lexer needs to - // parse each byte of the input. - $len = ($str instanceof UtfString) ? $str->length() : strlen($str); - - // For multi-byte strings, a new instance of `UtfString` is - // initialized (only if `UtfString` usage is forced. - if (!($str instanceof UtfString)) { - if ((USE_UTF_STRINGS) && ($len !== mb_strlen($str, 'UTF-8'))) { - $str = new UtfString($str); - } - } - - $this->str = $str; - $this->len = ($str instanceof UtfString) ? $str->length() : $len; - - $this->strict = $strict; - - // Setting the delimiter. - $this->setDelimiter( - !empty($delimiter) ? $delimiter : static::$DEFAULT_DELIMITER - ); - - $this->lex(); - } - - /** - * Sets the delimiter. - * - * @param string $delimiter The new delimiter. - */ - public function setDelimiter($delimiter) - { - $this->delimiter = $delimiter; - $this->delimiterLen = strlen($delimiter); - } - - /** - * Parses the string and extracts lexemes. - * - * @return void - */ - public function lex() - { - // TODO: Sometimes, static::parse* functions make unnecessary calls to - // is* functions. For a better performance, some rules can be deduced - // from context. - // For example, in `parseBool` there is no need to compare the token - // every time with `true` and `false`. The first step would be to - // compare with 'true' only and just after that add another letter from - // context and compare again with `false`. - // Another example is `parseComment`. - - $list = new TokensList(); - - /** - * Last processed token. - * - * @var Token $lastToken - */ - $lastToken = null; - - for ($this->last = 0, $lastIdx = 0; $this->last < $this->len; $lastIdx = ++$this->last) { - /** - * The new token. - * - * @var Token $token - */ - $token = null; - - foreach (static::$PARSER_METHODS as $method) { - if (($token = $this->$method())) { - break; - } - } - - if ($token === null) { - // @assert($this->last === $lastIdx); - $token = new Token($this->str[$this->last]); - $this->error( - __('Unexpected character.'), - $this->str[$this->last], - $this->last - ); - } elseif (($lastToken !== null) - && ($token->type === Token::TYPE_SYMBOL) - && ($token->flags & Token::FLAG_SYMBOL_VARIABLE) - && (($lastToken->type === Token::TYPE_STRING) - || (($lastToken->type === Token::TYPE_SYMBOL) - && ($lastToken->flags & Token::FLAG_SYMBOL_BACKTICK))) - ) { - // Handles ```... FROM 'user'@'%' ...```. - $lastToken->token .= $token->token; - $lastToken->type = Token::TYPE_SYMBOL; - $lastToken->flags = Token::FLAG_SYMBOL_USER; - $lastToken->value .= '@' . $token->value; - continue; - } elseif (($lastToken !== null) - && ($token->type === Token::TYPE_KEYWORD) - && ($lastToken->type === Token::TYPE_OPERATOR) - && ($lastToken->value === '.') - ) { - // Handles ```... tbl.FROM ...```. In this case, FROM is not - // a reserved word. - $token->type = Token::TYPE_NONE; - $token->flags = 0; - $token->value = $token->token; - } - - $token->position = $lastIdx; - - $list->tokens[$list->count++] = $token; - - // Handling delimiters. - if (($token->type === Token::TYPE_NONE) && ($token->value === 'DELIMITER')) { - if ($this->last + 1 >= $this->len) { - $this->error( - __('Expected whitespace(s) before delimiter.'), - '', - $this->last + 1 - ); - continue; - } - - // Skipping last R (from `delimiteR`) and whitespaces between - // the keyword `DELIMITER` and the actual delimiter. - $pos = ++$this->last; - if (($token = $this->parseWhitespace()) !== null) { - $token->position = $pos; - $list->tokens[$list->count++] = $token; - } - - // Preparing the token that holds the new delimiter. - if ($this->last + 1 >= $this->len) { - $this->error( - __('Expected delimiter.'), - '', - $this->last + 1 - ); - continue; - } - $pos = $this->last + 1; - - // Parsing the delimiter. - $this->delimiter = null; - while ((++$this->last < $this->len) && (!Context::isWhitespace($this->str[$this->last]))) { - $this->delimiter .= $this->str[$this->last]; - } - - if (empty($this->delimiter)) { - $this->error( - __('Expected delimiter.'), - '', - $this->last - ); - $this->delimiter = ';'; - } - - --$this->last; - - // Saving the delimiter and its token. - $this->delimiterLen = strlen($this->delimiter); - $token = new Token($this->delimiter, Token::TYPE_DELIMITER); - $token->position = $pos; - $list->tokens[$list->count++] = $token; - } - - $lastToken = $token; - } - - // Adding a final delimiter to mark the ending. - $list->tokens[$list->count++] = new Token(null, Token::TYPE_DELIMITER); - - // Saving the tokens list. - $this->list = $list; - } - - /** - * Creates a new error log. - * - * @param string $msg The error message. - * @param string $str The character that produced the error. - * @param int $pos The position of the character. - * @param int $code The code of the error. - * - * @throws LexerException Throws the exception, if strict mode is enabled. - * - * @return void - */ - public function error($msg = '', $str = '', $pos = 0, $code = 0) - { - $error = new LexerException($msg, $str, $pos, $code); - if ($this->strict) { - throw $error; - } - $this->errors[] = $error; - } - - /** - * Parses a keyword. - * - * @return Token - */ - public function parseKeyword() - { - $token = ''; - - /** - * Value to be returned. - * - * @var Token $ret - */ - $ret = null; - - /** - * The value of `$this->last` where `$token` ends in `$this->str`. - * - * @var int $iEnd - */ - $iEnd = $this->last; - - /** - * Whether last parsed character is a whitespace. - * - * @var bool $lastSpace - */ - $lastSpace = false; - - for ($j = 1; $j < Context::KEYWORD_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { - // Composed keywords shouldn't have more than one whitespace between - // keywords. - if (Context::isWhitespace($this->str[$this->last])) { - if ($lastSpace) { - --$j; // The size of the keyword didn't increase. - continue; - } else { - $lastSpace = true; - } - } else { - $lastSpace = false; - } - $token .= $this->str[$this->last]; - if (($this->last + 1 === $this->len) || (Context::isSeparator($this->str[$this->last + 1]))) { - if (($flags = Context::isKeyword($token))) { - $ret = new Token($token, Token::TYPE_KEYWORD, $flags); - $iEnd = $this->last; - - // We don't break so we find longest keyword. - // For example, `OR` and `ORDER` have a common prefix `OR`. - // If we stopped at `OR`, the parsing would be invalid. - } - } - } - - $this->last = $iEnd; - return $ret; - } - - /** - * Parses an operator. - * - * @return Token - */ - public function parseOperator() - { - $token = ''; - - /** - * Value to be returned. - * - * @var Token $ret - */ - $ret = null; - - /** - * The value of `$this->last` where `$token` ends in `$this->str`. - * - * @var int $iEnd - */ - $iEnd = $this->last; - - for ($j = 1; $j < Context::OPERATOR_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { - $token .= $this->str[$this->last]; - if ($flags = Context::isOperator($token)) { - $ret = new Token($token, Token::TYPE_OPERATOR, $flags); - $iEnd = $this->last; - } - } - - $this->last = $iEnd; - return $ret; - } - - /** - * Parses a whitespace. - * - * @return Token - */ - public function parseWhitespace() - { - $token = $this->str[$this->last]; - - if (!Context::isWhitespace($token)) { - return null; - } - - while ((++$this->last < $this->len) && (Context::isWhitespace($this->str[$this->last]))) { - $token .= $this->str[$this->last]; - } - - --$this->last; - return new Token($token, Token::TYPE_WHITESPACE); - } - - /** - * Parses a comment. - * - * @return Token - */ - public function parseComment() - { - $iBak = $this->last; - $token = $this->str[$this->last]; - - // Bash style comments. (#comment\n) - if (Context::isComment($token)) { - while ((++$this->last < $this->len) && ($this->str[$this->last] !== "\n")) { - $token .= $this->str[$this->last]; - } - $token .= "\n"; // Adding the line ending. - return new Token($token, Token::TYPE_COMMENT, Token::FLAG_COMMENT_BASH); - } - - // C style comments. (/*comment*\/) - if (++$this->last < $this->len) { - $token .= $this->str[$this->last]; - if (Context::isComment($token)) { - $flags = Token::FLAG_COMMENT_C; - - // This comment already ended. It may be a part of a - // previous MySQL specific command. - if ($token === '*/') { - return new Token($token, Token::TYPE_COMMENT, $flags); - } - - // Checking if this is a MySQL-specific command. - if (($this->last + 1 < $this->len) && ($this->str[$this->last + 1] === '!')) { - $flags |= Token::FLAG_COMMENT_MYSQL_CMD; - $token .= $this->str[++$this->last]; - - while ((++$this->last < $this->len) - && ('0' <= $this->str[$this->last]) - && ($this->str[$this->last] <= '9') - ) { - $token .= $this->str[$this->last]; - } - --$this->last; - - // We split this comment and parse only its beginning - // here. - return new Token($token, Token::TYPE_COMMENT, $flags); - } - - // Parsing the comment. - while ((++$this->last < $this->len) - && (($this->str[$this->last - 1] !== '*') || ($this->str[$this->last] !== '/')) - ) { - $token .= $this->str[$this->last]; - } - - // Adding the ending. - if ($this->last < $this->len) { - $token .= $this->str[$this->last]; - } - return new Token($token, Token::TYPE_COMMENT, $flags); - } - } - - // SQL style comments. (-- comment\n) - if (++$this->last < $this->len) { - $token .= $this->str[$this->last]; - if (Context::isComment($token)) { - // Checking if this comment did not end already (```--\n```). - if ($this->str[$this->last] !== "\n") { - while ((++$this->last < $this->len) && ($this->str[$this->last] !== "\n")) { - $token .= $this->str[$this->last]; - } - $token .= "\n"; // Adding the line ending. - } - return new Token($token, Token::TYPE_COMMENT, Token::FLAG_COMMENT_SQL); - } - } - - $this->last = $iBak; - return null; - } - - /** - * Parses a boolean. - * - * @return Token - */ - public function parseBool() - { - if ($this->last + 3 >= $this->len) { - // At least `min(strlen('TRUE'), strlen('FALSE'))` characters are - // required. - return null; - } - - $iBak = $this->last; - $token = $this->str[$this->last] . $this->str[++$this->last] - . $this->str[++$this->last] . $this->str[++$this->last]; // _TRUE_ or _FALS_e - - if (Context::isBool($token)) { - return new Token($token, Token::TYPE_BOOL); - } elseif (++$this->last < $this->len) { - $token .= $this->str[$this->last]; // fals_E_ - if (Context::isBool($token)) { - return new Token($token, Token::TYPE_BOOL, 1); - } - } - - $this->last = $iBak; - return null; - } - - /** - * Parses a number. - * - * @return Token - */ - public function parseNumber() - { - // A rudimentary state machine is being used to parse numbers due to - // the various forms of their notation. - // - // Below are the states of the machines and the conditions to change - // the state. - // - // 1 --------------------[ + or - ]-------------------> 1 - // 1 -------------------[ 0x or 0X ]------------------> 2 - // 1 --------------------[ 0 to 9 ]-------------------> 3 - // 1 -----------------------[ . ]---------------------> 4 - // 1 -----------------------[ b ]---------------------> 7 - // - // 2 --------------------[ 0 to F ]-------------------> 2 - // - // 3 --------------------[ 0 to 9 ]-------------------> 3 - // 3 -----------------------[ . ]---------------------> 4 - // 3 --------------------[ e or E ]-------------------> 5 - // - // 4 --------------------[ 0 to 9 ]-------------------> 4 - // 4 --------------------[ e or E ]-------------------> 5 - // - // 5 ---------------[ + or - or 0 to 9 ]--------------> 6 - // - // 7 -----------------------[ ' ]---------------------> 8 - // - // 8 --------------------[ 0 or 1 ]-------------------> 8 - // 8 -----------------------[ ' ]---------------------> 9 - // - // State 1 may be reached by negative numbers. - // State 2 is reached only by hex numbers. - // State 4 is reached only by float numbers. - // State 5 is reached only by numbers in approximate form. - // State 7 is reached only by numbers in bit representation. - // - // Valid final states are: 2, 3, 4 and 6. Any parsing that finished in a - // state other than these is invalid. - $iBak = $this->last; - $token = ''; - $flags = 0; - $state = 1; - for (; $this->last < $this->len; ++$this->last) { - if ($state === 1) { - if ($this->str[$this->last] === '-') { - $flags |= Token::FLAG_NUMBER_NEGATIVE; - } elseif (($this->last + 1 < $this->len) - && ($this->str[$this->last] === '0') - && (($this->str[$this->last + 1] === 'x') - || ($this->str[$this->last + 1] === 'X')) - ) { - $token .= $this->str[$this->last++]; - $state = 2; - } elseif (($this->str[$this->last] >= '0') && ($this->str[$this->last] <= '9')) { - $state = 3; - } elseif ($this->str[$this->last] === '.') { - $state = 4; - } elseif ($this->str[$this->last] === 'b') { - $state = 7; - } elseif ($this->str[$this->last] !== '+') { - // `+` is a valid character in a number. - break; - } - } elseif ($state === 2) { - $flags |= Token::FLAG_NUMBER_HEX; - if (!((($this->str[$this->last] >= '0') && ($this->str[$this->last] <= '9')) - || (($this->str[$this->last] >= 'A') && ($this->str[$this->last] <= 'F')) - || (($this->str[$this->last] >= 'a') && ($this->str[$this->last] <= 'f'))) - ) { - break; - } - } elseif ($state === 3) { - if ($this->str[$this->last] === '.') { - $state = 4; - } elseif (($this->str[$this->last] === 'e') || ($this->str[$this->last] === 'E')) { - $state = 5; - } elseif (($this->str[$this->last] < '0') || ($this->str[$this->last] > '9')) { - // Just digits and `.`, `e` and `E` are valid characters. - break; - } - } elseif ($state === 4) { - $flags |= Token::FLAG_NUMBER_FLOAT; - if (($this->str[$this->last] === 'e') || ($this->str[$this->last] === 'E')) { - $state = 5; - } elseif (($this->str[$this->last] < '0') || ($this->str[$this->last] > '9')) { - // Just digits, `e` and `E` are valid characters. - break; - } - } elseif ($state === 5) { - $flags |= Token::FLAG_NUMBER_APPROXIMATE; - if (($this->str[$this->last] === '+') || ($this->str[$this->last] === '-') - || ((($this->str[$this->last] >= '0') && ($this->str[$this->last] <= '9'))) - ) { - $state = 6; - } else { - break; - } - } elseif ($state === 6) { - if (($this->str[$this->last] < '0') || ($this->str[$this->last] > '9')) { - // Just digits are valid characters. - break; - } - } elseif ($state === 7) { - $flags |= Token::FLAG_NUMBER_BINARY; - if ($this->str[$this->last] === '\'') { - $state = 8; - } else { - break; - } - } elseif ($state === 8) { - if ($this->str[$this->last] === '\'') { - $state = 9; - } elseif (($this->str[$this->last] !== '0') - && ($this->str[$this->last] !== '1') - ) { - break; - } - } elseif ($state === 9) { - break; - } - $token .= $this->str[$this->last]; - } - if (($state === 2) || ($state === 3) - || (($token !== '.') && ($state === 4)) - || ($state === 6) || ($state === 9) - ) { - --$this->last; - return new Token($token, Token::TYPE_NUMBER, $flags); - } - $this->last = $iBak; - return null; - } - - /** - * Parses a string. - * - * @param string $quote Additional starting symbol. - * - * @return Token - */ - public function parseString($quote = '') - { - $token = $this->str[$this->last]; - if ((!($flags = Context::isString($token))) && ($token !== $quote)) { - return null; - } - $quote = $token; - - while (++$this->last < $this->len) { - if (($this->last + 1 < $this->len) - && ((($this->str[$this->last] === $quote) && ($this->str[$this->last + 1] === $quote)) - || (($this->str[$this->last] === '\\') && ($quote !== '`'))) - ) { - $token .= $this->str[$this->last] . $this->str[++$this->last]; - } else { - if ($this->str[$this->last] === $quote) { - break; - } - $token .= $this->str[$this->last]; - } - } - - if (($this->last >= $this->len) || ($this->str[$this->last] !== $quote)) { - $this->error( - sprintf( - __('Ending quote %1$s was expected.'), - $quote - ), - '', - $this->last - ); - } else { - $token .= $this->str[$this->last]; - } - return new Token($token, Token::TYPE_STRING, $flags); - } - - /** - * Parses a symbol. - * - * @return Token - */ - public function parseSymbol() - { - $token = $this->str[$this->last]; - if (!($flags = Context::isSymbol($token))) { - return null; - } - - if ($flags & Token::FLAG_SYMBOL_VARIABLE) { - if ($this->str[++$this->last] === '@') { - // This is a system variable (e.g. `@@hostname`). - $token .= $this->str[$this->last++]; - $flags |= Token::FLAG_SYMBOL_SYSTEM; - } - } else { - $token = ''; - } - - $str = null; - - if ($this->last < $this->len) { - if (($str = $this->parseString('`')) === null) { - if (($str = static::parseUnknown()) === null) { - $this->error( - __('Variable name was expected.'), - $this->str[$this->last], - $this->last - ); - } - } - } - - if ($str !== null) { - $token .= $str->token; - } - - return new Token($token, Token::TYPE_SYMBOL, $flags); - } - - /** - * Parses unknown parts of the query. - * - * @return Token - */ - public function parseUnknown() - { - $token = $this->str[$this->last]; - if (Context::isSeparator($token)) { - return null; - } - while ((++$this->last < $this->len) && (!Context::isSeparator($this->str[$this->last]))) { - $token .= $this->str[$this->last]; - } - --$this->last; - return new Token($token); - } - - /** - * Parses the delimiter of the query. - * - * @return Token - */ - public function parseDelimiter() - { - $idx = 0; - - while (($idx < $this->delimiterLen) && ($this->last + $idx < $this->len)) { - if ($this->delimiter[$idx] !== $this->str[$this->last + $idx]) { - return null; - } - ++$idx; - } - - $this->last += $this->delimiterLen - 1; - return new Token($this->delimiter, Token::TYPE_DELIMITER); - } -} diff --git a/libraries/sql-parser/src/Parser.php b/libraries/sql-parser/src/Parser.php deleted file mode 100644 index e878570b19..0000000000 --- a/libraries/sql-parser/src/Parser.php +++ /dev/null @@ -1,560 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Parser -{ - - /** - * Array of classes that are used in parsing the SQL statements. - * - * @var array - */ - public static $STATEMENT_PARSERS = array( - - // MySQL Utility Statements - 'DESCRIBE' => 'SqlParser\\Statements\\ExplainStatement', - 'DESC' => 'SqlParser\\Statements\\ExplainStatement', - 'EXPLAIN' => 'SqlParser\\Statements\\ExplainStatement', - 'FLUSH' => '', - 'GRANT' => '', - 'HELP' => '', - 'SET PASSWORD' => '', - 'STATUS' => '', - 'USE' => '', - - // Table Maintenance Statements - // https://dev.mysql.com/doc/refman/5.7/en/table-maintenance-sql.html - 'ANALYZE' => 'SqlParser\\Statements\\AnalyzeStatement', - 'BACKUP' => 'SqlParser\\Statements\\BackupStatement', - 'CHECK' => 'SqlParser\\Statements\\CheckStatement', - 'CHECKSUM' => 'SqlParser\\Statements\\ChecksumStatement', - 'OPTIMIZE' => 'SqlParser\\Statements\\OptimizeStatement', - 'REPAIR' => 'SqlParser\\Statements\\RepairStatement', - 'RESTORE' => 'SqlParser\\Statements\\RestoreStatement', - - // Database Administration Statements - // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-server-administration.html - 'SET' => 'SqlParser\\Statements\\SetStatement', - 'SHOW' => 'SqlParser\\Statements\\ShowStatement', - - // Data Definition Statements. - // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-definition.html - 'ALTER' => 'SqlParser\\Statements\\AlterStatement', - 'CREATE' => 'SqlParser\\Statements\\CreateStatement', - 'DROP' => 'SqlParser\\Statements\\DropStatement', - 'RENAME' => 'SqlParser\\Statements\\RenameStatement', - 'TRUNCATE' => 'SqlParser\\Statements\\TruncateStatement', - - // Data Manipulation Statements. - // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-manipulation.html - 'CALL' => 'SqlParser\\Statements\\CallStatement', - 'DELETE' => 'SqlParser\\Statements\\DeleteStatement', - 'DO' => '', - 'HANDLER' => '', - 'INSERT' => 'SqlParser\\Statements\\InsertStatement', - 'LOAD' => '', - 'REPLACE' => 'SqlParser\\Statements\\ReplaceStatement', - 'SELECT' => 'SqlParser\\Statements\\SelectStatement', - 'UPDATE' => 'SqlParser\\Statements\\UpdateStatement', - - // Prepared Statements. - // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html - 'DEALLOCATE' => '', - 'EXECUTE' => '', - 'PREPARE' => '', - - // Transactional and Locking Statements - // https://dev.mysql.com/doc/refman/5.7/en/commit.html - 'BEGIN' => 'SqlParser\\Statements\\TransactionStatement', - 'COMMIT' => 'SqlParser\\Statements\\TransactionStatement', - 'ROLLBACK' => 'SqlParser\\Statements\\TransactionStatement', - 'START TRANSACTION' => 'SqlParser\\Statements\\TransactionStatement', - ); - - /** - * Array of classes that are used in parsing SQL components. - * - * @var array - */ - public static $KEYWORD_PARSERS = array( - - // This is not a proper keyword and was added here to help the - // formatter. - 'PARTITION BY' => array(), - 'SUBPARTITION BY' => array(), - - // This is not a proper keyword and was added here to help the - // builder. - '_OPTIONS' => array( - 'class' => 'SqlParser\\Components\\OptionsArray', - 'field' => 'options', - ), - 'UNION' => array( - 'class' => 'SqlParser\\Components\\UnionKeyword', - 'field' => 'union', - ), - 'UNION ALL' => array( - 'class' => 'SqlParser\\Components\\UnionKeyword', - 'field' => 'union', - ), - - // Actual clause parsers. - 'ALTER' => array( - 'class' => 'SqlParser\\Components\\Expression', - 'field' => 'table', - 'options' => array('parseField' => 'table'), - ), - 'ANALYZE' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'tables', - 'options' => array('parseField' => 'table'), - ), - 'BACKUP' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'tables', - 'options' => array('parseField' => 'table'), - ), - 'CALL' => array( - 'class' => 'SqlParser\\Components\\FunctionCall', - 'field' => 'call', - ), - 'CHECK' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'tables', - 'options' => array('parseField' => 'table'), - ), - 'CHECKSUM' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'tables', - 'options' => array('parseField' => 'table'), - ), - 'DROP' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'fields', - 'options' => array('parseField' => 'table'), - ), - 'FROM' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'from', - 'options' => array('parseField' => 'table'), - ), - 'GROUP BY' => array( - 'class' => 'SqlParser\\Components\\OrderKeyword', - 'field' => 'group', - ), - 'HAVING' => array( - 'class' => 'SqlParser\\Components\\Condition', - 'field' => 'having', - ), - 'INTO' => array( - 'class' => 'SqlParser\\Components\\IntoKeyword', - 'field' => 'into', - ), - 'JOIN' => array( - 'class' => 'SqlParser\\Components\\JoinKeyword', - 'field' => 'join', - ), - 'LEFT JOIN' => array( - 'class' => 'SqlParser\\Components\\JoinKeyword', - 'field' => 'join', - ), - 'LEFT OUTER JOIN' => array( - 'class' => 'SqlParser\\Components\\JoinKeyword', - 'field' => 'join', - ), - 'RIGHT JOIN' => array( - 'class' => 'SqlParser\\Components\\JoinKeyword', - 'field' => 'join', - ), - 'RIGHT OUTER JOIN' => array( - 'class' => 'SqlParser\\Components\\JoinKeyword', - 'field' => 'join', - ), - 'INNER JOIN' => array( - 'class' => 'SqlParser\\Components\\JoinKeyword', - 'field' => 'join', - ), - 'FULL JOIN' => array( - 'class' => 'SqlParser\\Components\\JoinKeyword', - 'field' => 'join', - ), - 'STRAIGHT_JOIN' => array( - 'class' => 'SqlParser\\Components\\JoinKeyword', - 'field' => 'join', - ), - 'LIMIT' => array( - 'class' => 'SqlParser\\Components\\Limit', - 'field' => 'limit', - ), - 'OPTIMIZE' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'tables', - 'options' => array('parseField' => 'table'), - ), - 'ORDER BY' => array( - 'class' => 'SqlParser\\Components\\OrderKeyword', - 'field' => 'order', - ), - 'PARTITION' => array( - 'class' => 'SqlParser\\Components\\ArrayObj', - 'field' => 'partition', - ), - 'PROCEDURE' => array( - 'class' => 'SqlParser\\Components\\FunctionCall', - 'field' => 'procedure', - ), - 'RENAME' => array( - 'class' => 'SqlParser\\Components\\RenameOperation', - 'field' => 'renames', - ), - 'REPAIR' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'tables', - 'options' => array('parseField' => 'table'), - ), - 'RESTORE' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'tables', - 'options' => array('parseField' => 'table'), - ), - 'SET' => array( - 'class' => 'SqlParser\\Components\\SetOperation', - 'field' => 'set', - ), - 'SELECT' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'expr', - ), - 'TRUNCATE' => array( - 'class' => 'SqlParser\\Components\\Expression', - 'field' => 'table', - 'options' => array('parseField' => 'table'), - ), - 'UPDATE' => array( - 'class' => 'SqlParser\\Components\\ExpressionArray', - 'field' => 'tables', - 'options' => array('parseField' => 'table'), - ), - 'VALUE' => array( - 'class' => 'SqlParser\\Components\\Array2d', - 'field' => 'values', - ), - 'VALUES' => array( - 'class' => 'SqlParser\\Components\\Array2d', - 'field' => 'values', - ), - 'WHERE' => array( - 'class' => 'SqlParser\\Components\\Condition', - 'field' => 'where', - ), - - ); - - /** - * The list of tokens that are parsed. - * - * @var TokensList - */ - public $list; - - /** - * Whether errors should throw exceptions or just be stored. - * - * @var bool - * - * @see static::$errors - */ - public $strict = false; - - /** - * List of errors that occurred during parsing. - * - * Usually, the parsing does not stop once an error occurred because that - * error might be a false positive or a partial result (even a bad one) - * might be needed. - * - * @var ParserException[] - * - * @see Parser::error() - */ - public $errors = array(); - - /** - * List of statements parsed. - * - * @var Statement[] - */ - public $statements = array(); - - /** - * The number of opened brackets. - * - * @var int - */ - public $brackets = 0; - - /** - * Constructor. - * - * @param string|UtfString|TokensList $list The list of tokens to be parsed. - * @param bool $strict Whether strict mode should be enabled or not. - */ - public function __construct($list = null, $strict = false) - { - if ((is_string($list)) || ($list instanceof UtfString)) { - $lexer = new Lexer($list, $strict); - $this->list = $lexer->list; - } elseif ($list instanceof TokensList) { - $this->list = $list; - } - - $this->strict = $strict; - - if ($list !== null) { - $this->parse(); - } - } - - /** - * Builds the parse trees. - * - * @return void - */ - public function parse() - { - - /** - * Last transaction. - * - * @var TransactionStatement $lastTransaction - */ - $lastTransaction = null; - - /** - * Last parsed statement. - * - * @var Statement $lastStatement - */ - $lastStatement = null; - - /** - * Union's type or false for no union. - * - * @var bool|string $unionType - */ - $unionType = false; - - /** - * The index of the last token from the last statement. - * - * @var int $prevLastIdx - */ - $prevLastIdx = -1; - - /** - * The list of tokens. - * - * @var TokensList $list - */ - $list = &$this->list; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // `DELIMITER` is not an actual statement and it requires - // special handling. - if (($token->type === Token::TYPE_NONE) - && (strtoupper($token->token) === 'DELIMITER') - ) { - // Skipping to the end of this statement. - $list->getNextOfType(Token::TYPE_DELIMITER); - $prevLastIdx = $list->idx; - continue; - } - - // Counting the brackets around statements. - if ($token->value === '(') { - ++$this->brackets; - continue; - } - - // Statements can start with keywords only. - // Comments, whitespaces, etc. are ignored. - if ($token->type !== Token::TYPE_KEYWORD) { - if (($token->type !== TOKEN::TYPE_COMMENT) - && ($token->type !== Token::TYPE_WHITESPACE) - && ($token->type !== Token::TYPE_OPERATOR) // `(` and `)` - && ($token->type !== Token::TYPE_DELIMITER) - ) { - $this->error( - __('Unexpected beginning of statement.'), - $token - ); - } - continue; - } - - if (($token->value === 'UNION') || ($token->value === 'UNION ALL')) { - $unionType = $token->value; - continue; - } - - // Checking if it is a known statement that can be parsed. - if (empty(static::$STATEMENT_PARSERS[$token->value])) { - if (!isset(static::$STATEMENT_PARSERS[$token->value])) { - // A statement is considered recognized if the parser - // is aware that it is a statement, but it does not have - // a parser for it yet. - $this->error( - __('Unrecognized statement type.'), - $token - ); - } - // Skipping to the end of this statement. - $list->getNextOfType(Token::TYPE_DELIMITER); - $prevLastIdx = $list->idx; - continue; - } - - /** - * The name of the class that is used for parsing. - * - * @var string $class - */ - $class = static::$STATEMENT_PARSERS[$token->value]; - - /** - * Processed statement. - * - * @var Statement $statement - */ - $statement = new $class($this, $this->list); - - // The first token that is a part of this token is the next token - // unprocessed by the previous statement. - // There might be brackets around statements and this shouldn't - // affect the parser - $statement->first = $prevLastIdx + 1; - - // Storing the index of the last token parsed and updating the old - // index. - $statement->last = $list->idx; - $prevLastIdx = $list->idx; - - // Handles unions. - if ((!empty($unionType)) - && ($lastStatement instanceof SelectStatement) - && ($statement instanceof SelectStatement) - ) { - /** - * This SELECT statement. - * - * @var SelectStatement $statement - */ - - /** - * Last SELECT statement. - * - * @var SelectStatement $lastStatement - */ - $lastStatement->union[] = array($unionType, $statement); - - // if there are no no delimiting brackets, the `ORDER` and - // `LIMIT` keywords actually belong to the first statement. - $lastStatement->order = $statement->order; - $lastStatement->limit = $statement->limit; - $statement->order = array(); - $statement->limit = null; - - // The statement actually ends where the last statement in - // union ends. - $lastStatement->last = $statement->last; - - $unionType = false; - continue; - } - - // Handles transactions. - if ($statement instanceof TransactionStatement) { - /** - * @var TransactionStatement $statement - */ - if ($statement->type === TransactionStatement::TYPE_BEGIN) { - $lastTransaction = $statement; - $this->statements[] = $statement; - } elseif ($statement->type === TransactionStatement::TYPE_END) { - if ($lastTransaction === null) { - // Even though an error occurred, the query is being - // saved. - $this->statements[] = $statement; - $this->error( - __('No transaction was previously started.'), - $token - ); - } else { - $lastTransaction->end = $statement; - } - $lastTransaction = null; - } - continue; - } - - // Finally, storing the statement. - if ($lastTransaction !== null) { - $lastTransaction->statements[] = $statement; - } else { - $this->statements[] = $statement; - } - $lastStatement = $statement; - - } - } - - /** - * Creates a new error log. - * - * @param string $msg The error message. - * @param Token $token The token that produced the error. - * @param int $code The code of the error. - * - * @throws ParserException Throws the exception, if strict mode is enabled. - * - * @return void - */ - public function error($msg = '', Token $token = null, $code = 0) - { - $error = new ParserException($msg, $token, $code); - if ($this->strict) { - throw $error; - } - $this->errors[] = $error; - } -} diff --git a/libraries/sql-parser/src/Statement.php b/libraries/sql-parser/src/Statement.php deleted file mode 100644 index eb9f3cbe03..0000000000 --- a/libraries/sql-parser/src/Statement.php +++ /dev/null @@ -1,400 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -abstract class Statement -{ - - /** - * Options for this statement. - * - * The option would be the key and the value can be an integer or an array. - * - * The integer represents only the index used. - * - * The array may have two keys: `0` is used to represent the index used and - * `1` is the type of the option (which may be 'var' or 'var='). Both - * options mean they expect a value after the option (e.g. `A = B` or `A B`, - * in which case `A` is the key and `B` is the value). The only difference - * is in the building process. `var` options are built as `A B` and `var=` - * options are built as `A = B` - * - * Two options that can be used together must have different values for - * indexes, else, when they will be used together, an error will occur. - * - * @var array - */ - public static $OPTIONS = array(); - - /** - * The clauses of this statement, in order. - * - * The value attributed to each clause is used by the builder and it may - * have one of the following values: - * - * - 1 = 01 - add the clause only - * - 2 = 10 - add the keyword - * - 3 = 11 - add both the keyword and the clause - * - * @var array - */ - public static $CLAUSES = array(); - - /** - * The options of this query. - * - * @var OptionsArray - * - * @see static::$OPTIONS - */ - public $options; - - /** - * The index of the first token used in this statement. - * - * @var int - */ - public $first; - - /** - * The index of the last token used in this statement. - * - * @var int - */ - public $last; - - /** - * Constructor. - * - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - */ - public function __construct(Parser $parser = null, TokensList $list = null) - { - if (($parser !== null) && ($list !== null)) { - $this->parse($parser, $list); - } - } - - /** - * Builds the string representation of this statement. - * - * @return string - */ - public function build() - { - /** - * Query to be returned. - * - * @var string $query - */ - $query = ''; - - /** - * Clauses which were built already. - * - * It is required to keep track of built clauses because some fields, - * for example `join` is used by multiple clauses (`JOIN`, `LEFT JOIN`, - * `LEFT OUTER JOIN`, etc.). The same happens for `VALUE` and `VALUES`. - * - * A clause is considered built just after fields' value - * (`$this->field`) was used in building. - * - * @var array - */ - $built = array(); - - /** - * Statement's clauses. - * - * @var array - */ - $clauses = $this->getClauses(); - - foreach ($clauses as $clause) { - /** - * The name of the clause. - * - * @var string $name - */ - $name = $clause[0]; - - /** - * The type of the clause. - * - * @see self::$CLAUSES - * @var int $type - */ - $type = $clause[1]; - - /** - * The builder (parser) of this clause. - * - * @var Component $class - */ - $class = Parser::$KEYWORD_PARSERS[$name]['class']; - - /** - * The name of the field that is used as source for the builder. - * Same field is used to store the result of parsing. - * - * @var string $field - */ - $field = Parser::$KEYWORD_PARSERS[$name]['field']; - - // The field is empty, there is nothing to be built. - if (empty($this->$field)) { - continue; - } - - // Checking if this field was already built. - if ($type & 1) { - if (!empty($built[$field])) { - continue; - } - $built[$field] = true; - } - - // Checking if the name of the clause should be added. - if ($type & 2) { - $query .= $name . ' '; - } - - // Checking if the result of the builder should be added. - if ($type & 1) { - $query .= $class::build($this->$field) . ' '; - } - } - - return $query; - } - - /** - * Parses the statements defined by the tokens list. - * - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * - * @return void - */ - public function parse(Parser $parser, TokensList $list) - { - /** - * Array containing all list of clauses parsed. - * This is used to check for duplicates. - * - * @var array $parsedClauses - */ - $parsedClauses = array(); - - // This may be corrected by the parser. - $this->first = $list->idx; - - /** - * Whether options were parsed or not. - * For statements that do not have any options this is set to `true` by - * default. - * - * @var bool $parsedOptions - */ - $parsedOptions = empty(static::$OPTIONS); - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Checking if this closing bracket is the pair for a bracket - // outside the statement. - if (($token->value === ')') && ($parser->brackets > 0)) { - --$parser->brackets; - continue; - } - - // Only keywords are relevant here. Other parts of the query are - // processed in the functions below. - if ($token->type !== Token::TYPE_KEYWORD) { - if (($token->type !== TOKEN::TYPE_COMMENT) - && ($token->type !== Token::TYPE_WHITESPACE) - ) { - $parser->error(__('Unexpected token.'), $token); - } - continue; - } - - // Unions are parsed by the parser because they represent more than - // one statement. - if (($token->value === 'UNION') || ($token->value === 'UNION ALL')) { - break; - } - - /** - * The name of the class that is used for parsing. - * - * @var Component $class - */ - $class = null; - - /** - * The name of the field where the result of the parsing is stored. - * - * @var string $field - */ - $field = null; - - /** - * Parser's options. - * - * @var array $options - */ - $options = array(); - - // Looking for duplicated clauses. - if ((!empty(Parser::$KEYWORD_PARSERS[$token->value])) - || (!empty(Parser::$STATEMENT_PARSERS[$token->value])) - ) { - if (!empty($parsedClauses[$token->value])) { - $parser->error( - __('This type of clause was previously parsed.'), - $token - ); - break; - } - $parsedClauses[$token->value] = true; - } - - // Checking if this is the beginning of a clause. - if (!empty(Parser::$KEYWORD_PARSERS[$token->value])) { - $class = Parser::$KEYWORD_PARSERS[$token->value]['class']; - $field = Parser::$KEYWORD_PARSERS[$token->value]['field']; - if (!empty(Parser::$KEYWORD_PARSERS[$token->value]['options'])) { - $options = Parser::$KEYWORD_PARSERS[$token->value]['options']; - } - } - - // Checking if this is the beginning of the statement. - if (!empty(Parser::$STATEMENT_PARSERS[$token->value])) { - if ((!empty(static::$CLAUSES)) // Undefined for some statements. - && (empty(static::$CLAUSES[$token->value])) - ) { - // Some keywords (e.g. `SET`) may be the beginning of a - // statement and a clause. - // If such keyword was found and it cannot be a clause of - // this statement it means it is a new statement, but no - // delimiter was found between them. - $parser->error( - __('A new statement was found, but no delimiter between it and the previous one.'), - $token - ); - break; - } - if (!$parsedOptions) { - if (empty(static::$OPTIONS[$token->value])) { - // Skipping keyword because if it is not a option. - ++$list->idx; - } - $this->options = OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ); - $parsedOptions = true; - } - } elseif ($class === null) { - // There is no parser for this keyword and isn't the beginning - // of a statement (so no options) either. - $parser->error(__('Unrecognized keyword.'), $token); - continue; - } - - $this->before($parser, $list, $token); - - // Parsing this keyword. - if ($class !== null) { - ++$list->idx; // Skipping keyword or last option. - $this->$field = $class::parse($parser, $list, $options); - } - - $this->after($parser, $list, $token); - } - - // This may be corrected by the parser. - $this->last = --$list->idx; // Go back to last used token. - } - - /** - * Function called before the token is processed. - * - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * @param Token $token The token that is being parsed. - * - * @return void - */ - public function before(Parser $parser, TokensList $list, Token $token) - { - - } - - /** - * Function called after the token was processed. - * - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * @param Token $token The token that is being parsed. - * - * @return void - */ - public function after(Parser $parser, TokensList $list, Token $token) - { - - } - - /** - * Gets the clauses of this statement. - * - * @return array - */ - public function getClauses() - { - return static::$CLAUSES; - } - - /** - * Builds the string representation of this statement. - * - * @see static::build - * - * @return string - */ - public function __toString() - { - return $this->build(); - } -} diff --git a/libraries/sql-parser/src/Statements/AlterStatement.php b/libraries/sql-parser/src/Statements/AlterStatement.php deleted file mode 100644 index c8786bd603..0000000000 --- a/libraries/sql-parser/src/Statements/AlterStatement.php +++ /dev/null @@ -1,141 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class AlterStatement extends Statement -{ - - /** - * Table affected. - * - * @var Expression - */ - public $table; - - /** - * Column affected by this statement. - * - * @var AlterOperation[] - */ - public $altered = array(); - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - 'ONLINE' => 1, - 'OFFLINE' => 1, - 'IGNORE' => 2, - ); - - /** - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * - * @return void - */ - public function parse(Parser $parser, TokensList $list) - { - ++$list->idx; // Skipping `ALTER`. - $this->options = OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ); - - // Skipping `TABLE`. - $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'TABLE'); - - // Parsing affected table. - $this->table = Expression::parse( - $parser, - $list, - array( - 'parseField' => 'column', - 'breakOnAlias' => true, - ) - ); - ++$list->idx; // Skipping field. - - /** - * The state of the parser. - * - * Below are the states of the parser. - * - * 0 -----------------[ alter operation ]-----------------> 1 - * - * 1 -------------------------[ , ]-----------------------> 0 - * - * @var int $state - */ - $state = 0; - - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping whitespaces and comments. - if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { - continue; - } - - if ($state === 0) { - $this->altered[] = AlterOperation::parse($parser, $list); - $state = 1; - } elseif ($state === 1) { - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { - $state = 0; - } - } - } - } - - /** - * @return string - */ - public function build() - { - $tmp = array(); - foreach ($this->altered as $altered) { - $tmp[] = $altered::build($altered); - } - - return 'ALTER ' . OptionsArray::build($this->options) - . ' TABLE ' . Expression::build($this->table) - . ' ' . implode(', ', $tmp); - } -} diff --git a/libraries/sql-parser/src/Statements/AnalyzeStatement.php b/libraries/sql-parser/src/Statements/AnalyzeStatement.php deleted file mode 100644 index b6ae99e8c0..0000000000 --- a/libraries/sql-parser/src/Statements/AnalyzeStatement.php +++ /dev/null @@ -1,48 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class AnalyzeStatement extends Statement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - - 'TABLE' => 1, - - 'NO_WRITE_TO_BINLOG' => 2, - 'LOCAL' => 3, - ); - - /** - * Analyzed tables. - * - * @var Expression[] - */ - public $tables; -} diff --git a/libraries/sql-parser/src/Statements/BackupStatement.php b/libraries/sql-parser/src/Statements/BackupStatement.php deleted file mode 100644 index 5a58a2acb4..0000000000 --- a/libraries/sql-parser/src/Statements/BackupStatement.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class BackupStatement extends MaintenanceStatement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - - 'TABLE' => 1, - - 'NO_WRITE_TO_BINLOG' => 2, - 'LOCAL' => 3, - - 'TO' => array(4, 'var'), - ); -} diff --git a/libraries/sql-parser/src/Statements/CallStatement.php b/libraries/sql-parser/src/Statements/CallStatement.php deleted file mode 100644 index bac73ee530..0000000000 --- a/libraries/sql-parser/src/Statements/CallStatement.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class CallStatement extends Statement -{ - - /** - * The name of the function and its parameters. - * - * @var FunctionCall - */ - public $call; -} diff --git a/libraries/sql-parser/src/Statements/CheckStatement.php b/libraries/sql-parser/src/Statements/CheckStatement.php deleted file mode 100644 index 8ffa9460f5..0000000000 --- a/libraries/sql-parser/src/Statements/CheckStatement.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class CheckStatement extends MaintenanceStatement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - - 'TABLE' => 1, - - 'FOR UPGRADE' => 2, - 'QUICK' => 3, - 'FAST' => 4, - 'MEDIUM' => 5, - 'EXTENDED' => 6, - 'CHANGED' => 7, - ); -} diff --git a/libraries/sql-parser/src/Statements/ChecksumStatement.php b/libraries/sql-parser/src/Statements/ChecksumStatement.php deleted file mode 100644 index 7c66bed786..0000000000 --- a/libraries/sql-parser/src/Statements/ChecksumStatement.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ChecksumStatement extends MaintenanceStatement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - - 'TABLE' => 1, - - 'QUICK' => 2, - 'EXTENDED' => 3, - ); -} diff --git a/libraries/sql-parser/src/Statements/CreateStatement.php b/libraries/sql-parser/src/Statements/CreateStatement.php deleted file mode 100644 index d5e23ad421..0000000000 --- a/libraries/sql-parser/src/Statements/CreateStatement.php +++ /dev/null @@ -1,563 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class CreateStatement extends Statement -{ - - /** - * Options for `CREATE` statements. - * - * @var array - */ - public static $OPTIONS = array( - - // CREATE TABLE - 'TEMPORARY' => 1, - - // CREATE VIEW - 'OR REPLACE' => array(2, 'var='), - 'ALGORITHM' => array(3, 'var='), - // `DEFINER` is also used for `CREATE FUNCTION / PROCEDURE` - 'DEFINER' => array(4, 'var='), - 'SQL SECURITY' => array(5, 'var'), - - 'DATABASE' => 6, - 'EVENT' => 6, - 'FUNCTION' => 6, - 'INDEX' => 6, - 'PROCEDURE' => 6, - 'SERVER' => 6, - 'TABLE' => 6, - 'TABLESPACE' => 6, - 'TRIGGER' => 6, - 'USER' => 6, - 'VIEW' => 6, - - // CREATE TABLE - 'IF NOT EXISTS' => 7, - ); - - /** - * All database options. - * - * @var array - */ - public static $DB_OPTIONS = array( - 'CHARACTER SET' => array(1, 'var='), - 'CHARSET' => array(1, 'var='), - 'DEFAULT CHARACTER SET' => array(1, 'var='), - 'DEFAULT CHARSET' => array(1, 'var='), - 'DEFAULT COLLATE' => array(2, 'var='), - 'COLLATE' => array(2, 'var='), - ); - - /** - * All table options. - * - * @var array - */ - public static $TABLE_OPTIONS = array( - 'ENGINE' => array(1, 'var='), - 'AUTO_INCREMENT' => array(2, 'var='), - 'AVG_ROW_LENGTH' => array(3, 'var'), - 'CHARACTER SET' => array(4, 'var='), - 'CHARSET' => array(4, 'var='), - 'DEFAULT CHARACTER SET' => array(4, 'var='), - 'DEFAULT CHARSET' => array(4, 'var='), - 'CHECKSUM' => array(5, 'var'), - 'DEFAULT COLLATE' => array(6, 'var='), - 'COLLATE' => array(6, 'var='), - 'COMMENT' => array(7, 'var='), - 'CONNECTION' => array(8, 'var'), - 'DATA DIRECTORY' => array(9, 'var'), - 'DELAY_KEY_WRITE' => array(10, 'var'), - 'INDEX DIRECTORY' => array(11, 'var'), - 'INSERT_METHOD' => array(12, 'var'), - 'KEY_BLOCK_SIZE' => array(13, 'var'), - 'MAX_ROWS' => array(14, 'var'), - 'MIN_ROWS' => array(15, 'var'), - 'PACK_KEYS' => array(16, 'var'), - 'PASSWORD' => array(17, 'var'), - 'ROW_FORMAT' => array(18, 'var'), - 'TABLESPACE' => array(19, 'var'), - 'STORAGE' => array(20, 'var'), - 'UNION' => array(21, 'var'), - ); - - /** - * All function options. - * - * @var array - */ - public static $FUNC_OPTIONS = array( - 'COMMENT' => array(1, 'var='), - 'LANGUAGE SQL' => 2, - 'DETERMINISTIC' => 3, - 'NOT DETERMINISTIC' => 3, - 'CONTAINS SQL' => 4, - 'NO SQL' => 4, - 'READS SQL DATA' => 4, - 'MODIFIES SQL DATA' => 4, - 'SQL SECURITY DEFINER' => array(5, 'var'), - ); - - /** - * All trigger options. - * - * @var array - */ - public static $TRIGGER_OPTIONS = array( - 'BEFORE' => 1, - 'AFTER' => 1, - 'INSERT' => 2, - 'UPDATE' => 2, - 'DELETE' => 2, - ); - - /** - * The name of the entity that is created. - * - * Used by all `CREATE` statements. - * - * @var Expression - */ - public $name; - - /** - * The options of the entity (table, procedure, function, etc.). - * - * Used by `CREATE TABLE`, `CREATE FUNCTION` and `CREATE PROCEDURE`. - * - * @var OptionsArray - * - * @see static::$TABLE_OPTIONS - * @see static::$FUNC_OPTIONS - * @see static::$TRIGGER_OPTIONS - */ - public $entityOptions; - - /** - * If `CREATE TABLE`, a list of columns and keys. - * If `CREATE VIEW`, a list of columns. - * - * Used by `CREATE TABLE` and `CREATE VIEW`. - * - * @var CreateDefinition[]|ArrayObj - */ - public $fields; - - /** - * Expression used for partitioning. - * - * @var string - */ - public $partitionBy; - - /** - * The number of partitions. - * - * @var int - */ - public $partitionsNum; - - /** - * Expression used for subpartitioning. - * - * @var string - */ - public $subpartitionBy; - - /** - * The number of subpartitions. - * - * @var int - */ - public $subpartitionsNum; - - /** - * The partition of the new table. - * - * @var PartitionDefinition[] - */ - public $partitions; - - /** - * If `CREATE TRIGGER` the name of the table. - * - * Used by `CREATE TRIGGER`. - * - * @var Expression - */ - public $table; - - /** - * The return data type of this routine. - * - * Used by `CREATE FUNCTION`. - * - * @var DataType - */ - public $return; - - /** - * The parameters of this routine. - * - * Used by `CREATE FUNCTION` and `CREATE PROCEDURE`. - * - * @var ParameterDefinition[] - */ - public $parameters; - - /** - * The body of this function or procedure. For views, it is the select - * statement that gets the - * - * Used by `CREATE FUNCTION`, `CREATE PROCEDURE` and `CREATE VIEW`. - * - * @var Token[]|string - */ - public $body = array(); - - /** - * @return string - */ - public function build() - { - $fields = ''; - if (!empty($this->fields)) { - if (is_array($this->fields)) { - $fields = CreateDefinition::build($this->fields) . ' '; - } elseif ($this->fields instanceof ArrayObj) { - $fields = ArrayObj::build($this->fields); - } - } - if ($this->options->has('DATABASE')) { - return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . OptionsArray::build($this->entityOptions); - } elseif ($this->options->has('TABLE')) { - $partition = ''; - - if (!empty($this->partitionBy)) { - $partition .= "\nPARTITION BY " . $this->partitionBy; - } - if (!empty($this->partitionsNum)) { - $partition .= "\nPARTITIONS " . $this->partitionsNum; - } - if (!empty($this->subpartitionBy)) { - $partition .= "\nSUBPARTITION BY " . $this->subpartitionBy; - } - if (!empty($this->subpartitionsNum)) { - $partition .= "\nSUBPARTITIONS " . $this->subpartitionsNum; - } - if (!empty($this->partitions)) { - $partition .= "\n" . PartitionDefinition::build($this->partitions); - } - - return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . $fields - . OptionsArray::build($this->entityOptions) - . $partition; - } elseif ($this->options->has('VIEW')) { - return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . $fields . ' AS ' . TokensList::build($this->body) . ' ' - . OptionsArray::build($this->entityOptions); - } elseif ($this->options->has('TRIGGER')) { - return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . OptionsArray::build($this->entityOptions) . ' ' - . 'ON ' . Expression::build($this->table) . ' ' - . 'FOR EACH ROW ' . TokensList::build($this->body); - } elseif (($this->options->has('PROCEDURE')) - || ($this->options->has('FUNCTION')) - ) { - $tmp = ''; - if ($this->options->has('FUNCTION')) { - $tmp = 'RETURNS ' . DataType::build($this->return); - } - return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . ParameterDefinition::build($this->parameters) . ' ' - . $tmp . ' ' . TokensList::build($this->body); - } else { - return 'CREATE ' - . OptionsArray::build($this->options) . ' ' - . Expression::build($this->name) . ' ' - . TokensList::build($this->body); - } - return ''; - } - - /** - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * - * @return void - */ - public function parse(Parser $parser, TokensList $list) - { - ++$list->idx; // Skipping `CREATE`. - - // Parsing options. - $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); - ++$list->idx; // Skipping last option. - - // Parsing the field name. - $this->name = Expression::parse( - $parser, - $list, - array( - 'parseField' => 'table', - 'breakOnAlias' => true, - ) - ); - - if ((!isset($this->name)) || ($this->name === '')) { - $parser->error( - __('The name of the entity was expected.'), - $list->tokens[$list->idx] - ); - } else { - ++$list->idx; // Skipping field. - } - - if ($this->options->has('DATABASE')) { - $this->entityOptions = OptionsArray::parse( - $parser, - $list, - static::$DB_OPTIONS - ); - } elseif ($this->options->has('TABLE')) { - $this->fields = CreateDefinition::parse($parser, $list); - if (empty($this->fields)) { - $parser->error( - __('At least one column definition was expected.'), - $list->tokens[$list->idx] - ); - } - ++$list->idx; - - $this->entityOptions = OptionsArray::parse( - $parser, - $list, - static::$TABLE_OPTIONS - ); - - /** - * The field that is being filled (`partitionBy` or - * `subpartitionBy`). - * - * @var string $field - */ - $field = null; - - /** - * The number of brackets. `false` means no bracket was found - * previously. At least one bracket is required to validate the - * expression. - * - * @var int|bool $brackets - */ - $brackets = false; - - /* - * Handles partitions. - */ - for (; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $token - */ - $token = $list->tokens[$list->idx]; - - // End of statement. - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - - // Skipping comments. - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - if (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'PARTITION BY')) { - $field = 'partitionBy'; - $brackets = false; - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'SUBPARTITION BY')) { - $field = 'subpartitionBy'; - $brackets = false; - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'PARTITIONS')) { - $token = $list->getNextOfType(Token::TYPE_NUMBER); - --$list->idx; // `getNextOfType` also advances one position. - $this->partitionsNum = $token->value; - } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'SUBPARTITIONS')) { - $token = $list->getNextOfType(Token::TYPE_NUMBER); - --$list->idx; // `getNextOfType` also advances one position. - $this->subpartitionsNum = $token->value; - } elseif (!empty($field)) { - /* - * Handling the content of `PARTITION BY` and `SUBPARTITION BY`. - */ - - // Counting brackets. - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - // This is used instead of `++$brackets` because, - // initially, `$brackets` is `false` cannot be - // incremented. - $brackets = $brackets + 1; - } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === ')')) { - --$brackets; - } - - // Building the expression used for partitioning. - $this->$field .= ($token->type === Token::TYPE_WHITESPACE) ? ' ' : $token->token; - - // Last bracket was read, the expression ended. - // Comparing with `0` and not `false`, because `false` means - // that no bracket was found and at least one must is - // required. - if ($brackets === 0) { - $this->$field = trim($this->$field); - $field = null; - } - } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - if (!empty($this->partitionBy)) { - $this->partitions = ArrayObj::parse( - $parser, - $list, - array( - 'type' => 'SqlParser\\Components\\PartitionDefinition' - ) - ); - } - break; - } - } - } elseif (($this->options->has('PROCEDURE')) - || ($this->options->has('FUNCTION')) - ) { - $this->parameters = ParameterDefinition::parse($parser, $list); - if ($this->options->has('FUNCTION')) { - $token = $list->getNextOfType(Token::TYPE_KEYWORD); - if ($token->value !== 'RETURNS') { - $parser->error( - __('A "RETURNS" keyword was expected.'), - $token - ); - } else { - ++$list->idx; - $this->return = DataType::parse( - $parser, - $list - ); - } - } - ++$list->idx; - - $this->entityOptions = OptionsArray::parse( - $parser, - $list, - static::$FUNC_OPTIONS - ); - ++$list->idx; - - for (; $list->idx < $list->count; ++$list->idx) { - $token = $list->tokens[$list->idx]; - $this->body[] = $token; - } - } elseif ($this->options->has('VIEW')) { - $token = $list->getNext(); // Skipping whitespaces and comments. - - // Parsing columns list. - if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { - --$list->idx; // getNext() also goes forward one field. - $this->fields = ArrayObj::parse($parser, $list); - ++$list->idx; // Skipping last token from the array. - $list->getNext(); - } - - // Parsing the `AS` keyword. - for (; $list->idx < $list->count; ++$list->idx) { - $token = $list->tokens[$list->idx]; - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - $this->body[] = $token; - } - } elseif ($this->options->has('TRIGGER')) { - // Parsing the time and the event. - $this->entityOptions = OptionsArray::parse( - $parser, - $list, - static::$TRIGGER_OPTIONS - ); - ++$list->idx; - - $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'ON'); - ++$list->idx; // Skipping `ON`. - - // Parsing the name of the table. - $this->table = Expression::parse( - $parser, - $list, - array( - 'parseField' => 'table', - 'breakOnAlias' => true, - ) - ); - ++$list->idx; - - $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'FOR EACH ROW'); - ++$list->idx; // Skipping `FOR EACH ROW`. - - for (; $list->idx < $list->count; ++$list->idx) { - $token = $list->tokens[$list->idx]; - $this->body[] = $token; - } - } else { - for (; $list->idx < $list->count; ++$list->idx) { - $token = $list->tokens[$list->idx]; - if ($token->type === Token::TYPE_DELIMITER) { - break; - } - $this->body[] = $token; - } - } - } -} diff --git a/libraries/sql-parser/src/Statements/DeleteStatement.php b/libraries/sql-parser/src/Statements/DeleteStatement.php deleted file mode 100644 index 0e13881926..0000000000 --- a/libraries/sql-parser/src/Statements/DeleteStatement.php +++ /dev/null @@ -1,99 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class DeleteStatement extends Statement -{ - - /** - * Options for `DELETE` statements. - * - * @var array - */ - public static $OPTIONS = array( - 'LOW_PRIORITY' => 1, - 'QUICK' => 2, - 'IGNORE' => 3, - ); - - /** - * The clauses of this statement, in order. - * - * @see Statement::$CLAUSES - * - * @var array - */ - public static $CLAUSES = array( - 'DELETE' => array('DELETE', 2), - // Used for options. - '_OPTIONS' => array('_OPTIONS', 1), - 'FROM' => array('FROM', 3), - 'PARTITION' => array('PARTITION', 3), - 'WHERE' => array('WHERE', 3), - 'ORDER BY' => array('ORDER BY', 3), - 'LIMIT' => array('LIMIT', 3), - ); - - /** - * Tables used as sources for this statement. - * - * @var Expression[] - */ - public $from; - - /** - * Partitions used as source for this statement. - * - * @var ArrayObj - */ - public $partition; - - /** - * Conditions used for filtering each row of the result set. - * - * @var Condition[] - */ - public $where; - - /** - * Specifies the order of the rows in the result set. - * - * @var OrderKeyword[] - */ - public $order; - - /** - * Conditions used for limiting the size of the result set. - * - * @var Limit - */ - public $limit; -} diff --git a/libraries/sql-parser/src/Statements/DropStatement.php b/libraries/sql-parser/src/Statements/DropStatement.php deleted file mode 100644 index 70583ed83b..0000000000 --- a/libraries/sql-parser/src/Statements/DropStatement.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class DropStatement extends Statement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - - 'DATABASE' => 1, - 'EVENT' => 1, - 'FUNCTION' => 1, - 'INDEX' => 1, - 'LOGFILE' => 1, - 'PROCEDURE' => 1, - 'SCHEMA' => 1, - 'SERVER' => 1, - 'TABLE' => 1, - 'TABLESPACE' => 1, - 'TRIGGER' => 1, - - 'TEMPORARY' => 2, - 'IF EXISTS' => 3, - ); - - /** - * The clauses of this statement, in order. - * - * @see Statement::$CLAUSES - * - * @var array - */ - public static $CLAUSES = array( - 'DROP' => array('DROP', 2), - // Used for options. - '_OPTIONS' => array('_OPTIONS', 1), - // Used for select expressions. - 'DROP_' => array('DROP', 1), - ); - - /** - * Dropped elements. - * - * @var Expression[] - */ - public $fields; -} diff --git a/libraries/sql-parser/src/Statements/ExplainStatement.php b/libraries/sql-parser/src/Statements/ExplainStatement.php deleted file mode 100644 index eb869643cb..0000000000 --- a/libraries/sql-parser/src/Statements/ExplainStatement.php +++ /dev/null @@ -1,23 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ExplainStatement extends NotImplementedStatement -{ - -} diff --git a/libraries/sql-parser/src/Statements/InsertStatement.php b/libraries/sql-parser/src/Statements/InsertStatement.php deleted file mode 100644 index c2a02b0ec0..0000000000 --- a/libraries/sql-parser/src/Statements/InsertStatement.php +++ /dev/null @@ -1,93 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class InsertStatement extends Statement -{ - - /** - * Options for `INSERT` statements. - * - * @var array - */ - public static $OPTIONS = array( - 'LOW_PRIORITY' => 1, - 'DELAYED' => 2, - 'HIGH_PRIORITY' => 3, - 'IGNORE' => 4, - ); - - /** - * Tables used as target for this statement. - * - * @var IntoKeyword - */ - public $into; - - /** - * Values to be inserted. - * - * @var ArrayObj[] - */ - public $values; - - /** - * @return string - */ - public function build() - { - return 'INSERT ' . $this->options - . ' INTO ' . $this->into - . ' VALUES ' . ArrayObj::build($this->values); - } -} diff --git a/libraries/sql-parser/src/Statements/MaintenanceStatement.php b/libraries/sql-parser/src/Statements/MaintenanceStatement.php deleted file mode 100644 index 952314e8f2..0000000000 --- a/libraries/sql-parser/src/Statements/MaintenanceStatement.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class MaintenanceStatement extends Statement -{ - - /** - * Tables maintained. - * - * @var Expression[] - */ - public $tables; - - /** - * Function called after the token was processed. - * - * Parses the additional options from the end. - * - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * @param Token $token The token that is being parsed. - * - * @return void - */ - public function after(Parser $parser, TokensList $list, Token $token) - { - // [some options] is going to be parsed first. - // - // There is a parser specified in `Parser::$KEYWORD_PARSERS` - // which parses the name of the tables. - // - // Finally, we parse here [some more options] and that's all. - ++$list->idx; - $this->options->merge( - OptionsArray::parse( - $parser, - $list, - static::$OPTIONS - ) - ); - } -} diff --git a/libraries/sql-parser/src/Statements/NotImplementedStatement.php b/libraries/sql-parser/src/Statements/NotImplementedStatement.php deleted file mode 100644 index 0a1dc338eb..0000000000 --- a/libraries/sql-parser/src/Statements/NotImplementedStatement.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class NotImplementedStatement extends Statement -{ - - /** - * The part of the statement that can't be parsed. - * - * @var Token[] - */ - public $unknown = array(); - - /** - * @return string - */ - public function build() - { - // Building the parsed part of the query (if any). - $query = parent::build() . ' '; - - // Rebuilding the unknown part from tokens. - foreach ($this->unknown as $token) { - $query .= $token->token; - } - - return $query; - } - - /** - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * - * @return void - */ - public function parse(Parser $parser, TokensList $list) - { - for (; $list->idx < $list->count; ++$list->idx) { - if ($list->tokens[$list->idx]->type === Token::TYPE_DELIMITER) { - break; - } - $this->unknown[] = $list->tokens[$list->idx]; - } - } -} diff --git a/libraries/sql-parser/src/Statements/OptimizeStatement.php b/libraries/sql-parser/src/Statements/OptimizeStatement.php deleted file mode 100644 index 07150150da..0000000000 --- a/libraries/sql-parser/src/Statements/OptimizeStatement.php +++ /dev/null @@ -1,48 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class OptimizeStatement extends Statement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - - 'TABLE' => 1, - - 'NO_WRITE_TO_BINLOG' => 2, - 'LOCAL' => 3, - ); - - /** - * Optimized tables. - * - * @var Expression[] - */ - public $tables; -} diff --git a/libraries/sql-parser/src/Statements/RenameStatement.php b/libraries/sql-parser/src/Statements/RenameStatement.php deleted file mode 100644 index 6b4f1888e0..0000000000 --- a/libraries/sql-parser/src/Statements/RenameStatement.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class RenameStatement extends Statement -{ - - /** - * The old and new names of the tables. - * - * @var RenameOperation[] - */ - public $renames; - - /** - * Function called before the token is processed. - * - * Skips the `TABLE` keyword after `RENAME`. - * - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * @param Token $token The token that is being parsed. - * - * @return void - */ - public function before(Parser $parser, TokensList $list, Token $token) - { - if (($token->type === Token::TYPE_KEYWORD) && ($token->value === 'RENAME')) { - // Checking if it is the beginning of the query. - $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'TABLE'); - } - } -} diff --git a/libraries/sql-parser/src/Statements/RepairStatement.php b/libraries/sql-parser/src/Statements/RepairStatement.php deleted file mode 100644 index b1d840b624..0000000000 --- a/libraries/sql-parser/src/Statements/RepairStatement.php +++ /dev/null @@ -1,43 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class RepairStatement extends MaintenanceStatement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - - 'TABLE' => 1, - - 'NO_WRITE_TO_BINLOG' => 2, - 'LOCAL' => 3, - - 'QUICK' => 4, - 'EXTENDED' => 5, - 'USE_FRM' => 6, - ); -} diff --git a/libraries/sql-parser/src/Statements/ReplaceStatement.php b/libraries/sql-parser/src/Statements/ReplaceStatement.php deleted file mode 100644 index 10c5e6312a..0000000000 --- a/libraries/sql-parser/src/Statements/ReplaceStatement.php +++ /dev/null @@ -1,84 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ReplaceStatement extends Statement -{ - - /** - * Options for `REPLACE` statements and their slot ID. - * - * @var array - */ - public static $OPTIONS = array( - 'LOW_PRIORITY' => 1, - 'DELAYED' => 1, - ); - - /** - * The clauses of this statement, in order. - * - * @see Statement::$CLAUSES - * - * @var array - */ - public static $CLAUSES = array( - 'REPLACE' => array('REPLACE', 2), - // Used for options. - '_OPTIONS' => array('_OPTIONS', 1), - 'INTO' => array('FROM', 3), - 'VALUES' => array('VALUES', 1), - 'SET' => array('PARTITION', 3), - ); - - /** - * Tables used as target for this statement. - * - * @var IntoKeyword - */ - public $into; - - /** - * Values to be replaced. - * - * @var Array2d - */ - public $values; - - /** - * The replaced values. - * - * @var SetOperation[] - */ - public $set; -} diff --git a/libraries/sql-parser/src/Statements/RestoreStatement.php b/libraries/sql-parser/src/Statements/RestoreStatement.php deleted file mode 100644 index be83dd64e1..0000000000 --- a/libraries/sql-parser/src/Statements/RestoreStatement.php +++ /dev/null @@ -1,36 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class RestoreStatement extends MaintenanceStatement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - - 'TABLE' => 1, - - 'FROM' => array(2, 'var'), - ); -} diff --git a/libraries/sql-parser/src/Statements/SelectStatement.php b/libraries/sql-parser/src/Statements/SelectStatement.php deleted file mode 100644 index 5d306f0662..0000000000 --- a/libraries/sql-parser/src/Statements/SelectStatement.php +++ /dev/null @@ -1,219 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class SelectStatement extends Statement -{ - - /** - * Options for `SELECT` statements and their slot ID. - * - * @var array - */ - public static $OPTIONS = array( - 'ALL' => 1, - 'DISTINCT' => 1, - 'DISTINCTROW' => 1, - 'HIGH_PRIORITY' => 2, - 'MAX_STATEMENT_TIME' => array(3, 'var='), - 'STRAIGHT_JOIN' => 4, - 'SQL_SMALL_RESULT' => 5, - 'SQL_BIG_RESULT' => 6, - 'SQL_BUFFER_RESULT' => 7, - 'SQL_CACHE' => 8, - 'SQL_NO_CACHE' => 8, - 'SQL_CALC_FOUND_ROWS' => 9, - ); - - /** - * The clauses of this statement, in order. - * - * @see Statement::$CLAUSES - * - * @var array - */ - public static $CLAUSES = array( - 'SELECT' => array('SELECT', 2), - // Used for options. - '_OPTIONS' => array('_OPTIONS', 1), - // Used for selected expressions. - '_SELECT' => array('SELECT', 1), - 'FROM' => array('FROM', 3), - 'PARTITION' => array('PARTITION', 3), - - 'JOIN' => array('JOIN', 1), - 'FULL JOIN' => array('FULL JOIN', 1), - 'INNER JOIN' => array('INNER JOIN', 1), - 'LEFT JOIN' => array('LEFT JOIN', 1), - 'LEFT OUTER JOIN' => array('LEFT OUTER JOIN', 1), - 'RIGHT JOIN' => array('RIGHT JOIN', 1), - 'RIGHT OUTER JOIN' => array('RIGHT OUTER JOIN', 1), - - 'WHERE' => array('WHERE', 3), - 'GROUP BY' => array('GROUP BY', 3), - 'HAVING' => array('HAVING', 3), - 'ORDER BY' => array('ORDER BY', 3), - 'LIMIT' => array('LIMIT', 3), - 'PROCEDURE' => array('PROCEDURE', 3), - 'INTO' => array('INTO', 3), - 'UNION' => array('UNION', 1), - // These are available only when `UNION` is present. - // 'ORDER BY' => array('ORDER BY', 3), - // 'LIMIT' => array('LIMIT', 3), - ); - - /** - * Expressions that are being selected by this statement. - * - * @var Expression[] - */ - public $expr = array(); - - /** - * Tables used as sources for this statement. - * - * @var Expression[] - */ - public $from = array(); - - /** - * Partitions used as source for this statement. - * - * @var ArrayObj - */ - public $partition; - - /** - * Conditions used for filtering each row of the result set. - * - * @var Condition[] - */ - public $where; - - /** - * Conditions used for grouping the result set. - * - * @var OrderKeyword[] - */ - public $group; - - /** - * Conditions used for filtering the result set. - * - * @var Condition[] - */ - public $having; - - /** - * Specifies the order of the rows in the result set. - * - * @var OrderKeyword[] - */ - public $order; - - /** - * Conditions used for limiting the size of the result set. - * - * @var Limit - */ - public $limit; - - /** - * Procedure that should process the data in the result set. - * - * @var FunctionCall - */ - public $procedure; - - /** - * Destination of this result set. - * - * @var IntoKeyword - */ - public $into; - - /** - * Joins. - * - * @var JoinKeyword[] - */ - public $join; - - /** - * Unions. - * - * @var SelectStatement[] - */ - public $union = array(); - - /** - * Gets the clauses of this statement. - * - * @return array - */ - public function getClauses() - { - // This is a cheap fix for `SELECT` statements that contain `UNION`. - // The `ORDER BY` and `LIMIT` clauses should be at the end of the - // statement. - if (!empty($this->union)) { - $clauses = static::$CLAUSES; - unset($clauses['ORDER BY']); - unset($clauses['LIMIT']); - $clauses['ORDER BY'] = array('ORDER BY', 3); - $clauses['LIMIT'] = array('LIMIT', 3); - return $clauses; - } - return static::$CLAUSES; - } -} diff --git a/libraries/sql-parser/src/Statements/SetStatement.php b/libraries/sql-parser/src/Statements/SetStatement.php deleted file mode 100644 index d4128533a8..0000000000 --- a/libraries/sql-parser/src/Statements/SetStatement.php +++ /dev/null @@ -1,43 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class SetStatement extends Statement -{ - - /** - * The clauses of this statement, in order. - * - * @see Statement::$CLAUSES - * - * @var array - */ - public static $CLAUSES = array( - 'SET' => array('SET', 3), - ); - - /** - * The updated values. - * - * @var SetOperation[] - */ - public $set; -} diff --git a/libraries/sql-parser/src/Statements/ShowStatement.php b/libraries/sql-parser/src/Statements/ShowStatement.php deleted file mode 100644 index ae8cb3f55c..0000000000 --- a/libraries/sql-parser/src/Statements/ShowStatement.php +++ /dev/null @@ -1,71 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class ShowStatement extends NotImplementedStatement -{ - - /** - * Options of this statement. - * - * @var array - */ - public static $OPTIONS = array( - 'CREATE' => 1, - 'AUTHORS' => 2, - 'BINARY' => 2, - 'BINLOG' => 2, - 'CHARACTER' => 2, - 'CODE' => 2, - 'COLLATION' => 2, - 'COLUMNS' => 2, - 'CONTRIBUTORS' => 2, - 'DATABASE' => 2, - 'DATABASES' => 2, - 'ENGINE' => 2, - 'ENGINES' => 2, - 'ERRORS' => 2, - 'EVENT' => 2, - 'EVENTS' => 2, - 'FUNCTION' => 2, - 'GRANTS' => 2, - 'HOSTS' => 2, - 'INDEX' => 2, - 'INNODB' => 2, - 'LOGS' => 2, - 'MASTER' => 2, - 'OPEN' => 2, - 'PLUGINS' => 2, - 'PRIVILEGES' => 2, - 'PROCEDURE' => 2, - 'PROCESSLIST' => 2, - 'PROFILE' => 2, - 'PROFILES' => 2, - 'SCHEDULER' => 2, - 'SET' => 2, - 'SLAVE' => 2, - 'STATUS' => 2, - 'TABLE' => 2, - 'TABLES' => 2, - 'TRIGGER' => 2, - 'TRIGGERS' => 2, - 'VARIABLES' => 2, - 'VIEW' => 2, - 'WARNINGS' => 2, - ); -} diff --git a/libraries/sql-parser/src/Statements/TransactionStatement.php b/libraries/sql-parser/src/Statements/TransactionStatement.php deleted file mode 100644 index 0ae83fec3f..0000000000 --- a/libraries/sql-parser/src/Statements/TransactionStatement.php +++ /dev/null @@ -1,120 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class TransactionStatement extends Statement -{ - - /** - * START TRANSACTION and BEGIN - * - * @var int - */ - const TYPE_BEGIN = 1; - - /** - * COMMIT and ROLLBACK - * - * @var int - */ - const TYPE_END = 2; - - /** - * The type of this query. - * - * @var int - */ - public $type; - - /** - * The list of statements in this transaction. - * - * @var Statement[] - */ - public $statements; - - /** - * The ending transaction statement which may be a `COMMIT` or a `ROLLBACK`. - * - * @var TransactionStatement - */ - public $end; - - /** - * Options for this query. - * - * @var array - */ - public static $OPTIONS = array( - 'START TRANSACTION' => 1, - 'BEGIN' => 1, - 'COMMIT' => 1, - 'ROLLBACK' => 1, - 'WITH CONSISTENT SNAPSHOT' => 2, - 'WORK' => 2, - 'AND NO CHAIN' => 3, - 'AND CHAIN' => 3, - 'RELEASE' => 4, - 'NO RELEASE' => 4, - ); - - /** - * @param Parser $parser The instance that requests parsing. - * @param TokensList $list The list of tokens to be parsed. - * - * @return void - */ - public function parse(Parser $parser, TokensList $list) - { - parent::parse($parser, $list); - - // Checks the type of this query. - if (($this->options->has('START TRANSACTION')) - || ($this->options->has('BEGIN')) - ) { - $this->type = TransactionStatement::TYPE_BEGIN; - } elseif (($this->options->has('COMMIT')) - || ($this->options->has('ROLLBACK')) - ) { - $this->type = TransactionStatement::TYPE_END; - } - } - - /** - * @return string - */ - public function build() - { - $ret = OptionsArray::build($this->options); - if ($this->type === TransactionStatement::TYPE_BEGIN) { - foreach ($this->statements as $statement) { - /** - * @var SelectStatement $statement - */ - $ret .= ';' . $statement->build(); - } - $ret .= ';' . $this->end->build(); - } - return $ret; - } -} diff --git a/libraries/sql-parser/src/Statements/TruncateStatement.php b/libraries/sql-parser/src/Statements/TruncateStatement.php deleted file mode 100644 index c0cb5fd2c1..0000000000 --- a/libraries/sql-parser/src/Statements/TruncateStatement.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class TruncateStatement extends Statement -{ - - /** - * Options for `TRUNCATE` statements. - * - * @var array - */ - public static $OPTIONS = array( - 'TABLE' => 1, - ); - - /** - * The name of the truncated table. - * - * @var Expression - */ - public $table; -} diff --git a/libraries/sql-parser/src/Statements/UpdateStatement.php b/libraries/sql-parser/src/Statements/UpdateStatement.php deleted file mode 100644 index 59b2ff72a3..0000000000 --- a/libraries/sql-parser/src/Statements/UpdateStatement.php +++ /dev/null @@ -1,105 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class UpdateStatement extends Statement -{ - - /** - * Options for `UPDATE` statements and their slot ID. - * - * @var array - */ - public static $OPTIONS = array( - 'LOW_PRIORITY' => 1, - 'IGNORE' => 2, - ); - - /** - * The clauses of this statement, in order. - * - * @see Statement::$CLAUSES - * - * @var array - */ - public static $CLAUSES = array( - 'UPDATE' => array('UPDATE', 2), - // Used for options. - '_OPTIONS' => array('_OPTIONS', 1), - // Used for updated tables. - '_UPDATE' => array('UPDATE', 1), - 'SET' => array('SET', 3), - 'WHERE' => array('WHERE', 3), - 'ORDER BY' => array('ORDER BY', 3), - 'LIMIT' => array('LIMIT', 3), - ); - - /** - * Tables used as sources for this statement. - * - * @var Expression[] - */ - public $tables; - - /** - * The updated values. - * - * @var SetOperation[] - */ - public $set; - - /** - * Conditions used for filtering each row of the result set. - * - * @var Condition[] - */ - public $where; - - /** - * Specifies the order of the rows in the result set. - * - * @var OrderKeyword[] - */ - public $order; - - /** - * Conditions used for limiting the size of the result set. - * - * @var Limit - */ - public $limit; -} diff --git a/libraries/sql-parser/src/Token.php b/libraries/sql-parser/src/Token.php deleted file mode 100644 index 9659672cf1..0000000000 --- a/libraries/sql-parser/src/Token.php +++ /dev/null @@ -1,292 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Token -{ - - // Types of tokens (a vague description of a token's purpose). - - /** - * This type is used when the token is invalid or its type cannot be - * determined because of the ambiguous context. Further analysis might be - * required to detect its type. - * - * @var int - */ - const TYPE_NONE = 0; - - /** - * SQL specific keywords: SELECT, UPDATE, INSERT, etc. - * - * @var int - */ - const TYPE_KEYWORD = 1; - - /** - * Any type of legal operator. - * - * Arithmetic operators: +, -, *, /, etc. - * Logical operators: ===, <>, !==, etc. - * Bitwise operators: &, |, ^, etc. - * Assignment operators: =, +=, -=, etc. - * SQL specific operators: . (e.g. .. WHERE database.table ..), - * * (e.g. SELECT * FROM ..) - * - * @var int - */ - const TYPE_OPERATOR = 2; - - /** - * Spaces, tabs, new lines, etc. - * - * @var int - */ - const TYPE_WHITESPACE = 3; - - /** - * Any type of legal comment. - * - * Bash (#), C (/* *\/) or SQL (--) comments: - * - * -- SQL-comment - * - * #Bash-like comment - * - * /*C-like comment*\/ - * - * or: - * - * /*C-like - * comment*\/ - * - * Backslashes were added to respect PHP's comments syntax. - * - * @var int - */ - const TYPE_COMMENT = 4; - - /** - * Boolean values: true or false. - * - * @var int - */ - const TYPE_BOOL = 5; - - /** - * Numbers: 4, 0x8, 15.16, 23e42, etc. - * - * @var int - */ - const TYPE_NUMBER = 6; - - /** - * Literal strings: 'string', "test". - * Some of these strings are actually symbols. - * - * @var int - */ - const TYPE_STRING = 7; - - /** - * Database, table names, variables, etc. - * For example: ```SELECT `foo`, `bar` FROM `database`.`table`;``` - * - * @var int - */ - const TYPE_SYMBOL = 8; - - /** - * Delimits an unknown string. - * For example: ```SELECT * FROM test;```, `test` is a delimiter. - * - * @var int - */ - const TYPE_DELIMITER = 9; - - // Flags that describe the tokens in more detail. - // All keywords must have flag 1 so `Context::isKeyword` method doesn't - // require strict comparison. - const FLAG_KEYWORD_RESERVED = 2; - const FLAG_KEYWORD_COMPOSED = 4; - const FLAG_KEYWORD_DATA_TYPE = 8; - const FLAG_KEYWORD_KEY = 16; - const FLAG_KEYWORD_FUNCTION = 32; - - // Numbers related flags. - const FLAG_NUMBER_HEX = 1; - const FLAG_NUMBER_FLOAT = 2; - const FLAG_NUMBER_APPROXIMATE = 4; - const FLAG_NUMBER_NEGATIVE = 8; - const FLAG_NUMBER_BINARY = 16; - - // Strings related flags. - const FLAG_STRING_SINGLE_QUOTES = 1; - const FLAG_STRING_DOUBLE_QUOTES = 2; - - // Comments related flags. - const FLAG_COMMENT_BASH = 1; - const FLAG_COMMENT_C = 2; - const FLAG_COMMENT_SQL = 4; - const FLAG_COMMENT_MYSQL_CMD = 8; - - // Operators related flags. - const FLAG_OPERATOR_ARITHMETIC = 1; - const FLAG_OPERATOR_LOGICAL = 2; - const FLAG_OPERATOR_BITWISE = 4; - const FLAG_OPERATOR_ASSIGNMENT = 8; - const FLAG_OPERATOR_SQL = 16; - - // Symbols related flags. - const FLAG_SYMBOL_VARIABLE = 1; - const FLAG_SYMBOL_BACKTICK = 2; - const FLAG_SYMBOL_USER = 4; - const FLAG_SYMBOL_SYSTEM = 8; - - /** - * The token it its raw string representation. - * - * @var string - */ - public $token; - - /** - * The value this token contains (i.e. token after some evaluation) - * - * @var mixed - */ - public $value; - - /** - * The type of this token. - * - * @var int - */ - public $type; - - /** - * The flags of this token. - * - * @var int - */ - public $flags; - - /** - * The position in the initial string where this token started. - * - * @var int - */ - public $position; - - /** - * Constructor. - * - * @param string $token The value of the token. - * @param int $type The type of the token. - * @param int $flags The flags of the token. - */ - public function __construct($token, $type = 0, $flags = 0) - { - $this->token = $token; - $this->type = $type; - $this->flags = $flags; - $this->value = $this->extract(); - } - - /** - * Does little processing to the token to extract a value. - * - * If no processing can be done it will return the initial string. - * - * @return mixed - */ - public function extract() - { - switch ($this->type) { - case Token::TYPE_KEYWORD: - if (!($this->flags & Token::FLAG_KEYWORD_RESERVED)) { - // Unreserved keywords should stay the way they are because they - // might represent field names. - return $this->token; - } - return strtoupper($this->token); - case Token::TYPE_WHITESPACE: - return ' '; - case Token::TYPE_BOOL: - return strtoupper($this->token) === 'TRUE'; - case Token::TYPE_NUMBER: - $ret = str_replace('--', '', $this->token); // e.g. ---42 === -42 - if ($this->flags & Token::FLAG_NUMBER_HEX) { - if ($this->flags & Token::FLAG_NUMBER_NEGATIVE) { - $ret = str_replace('-', '', $this->token); - sscanf($ret, "%x", $ret); - $ret = -$ret; - } else { - sscanf($ret, "%x", $ret); - } - } elseif (($this->flags & Token::FLAG_NUMBER_APPROXIMATE) - || ($this->flags & Token::FLAG_NUMBER_FLOAT) - ) { - sscanf($ret, "%f", $ret); - } else { - sscanf($ret, "%d", $ret); - } - return $ret; - case Token::TYPE_STRING: - $quote = $this->token[0]; - $str = str_replace($quote . $quote, $quote, $this->token); - return mb_substr($str, 1, -1, 'UTF-8'); // trims quotes - case Token::TYPE_SYMBOL: - $str = $this->token; - if ((isset($str[0])) && ($str[0] === '@')) { - // `mb_strlen($str)` must be used instead of `null` because - // in PHP 5.3- the `null` parameter isn't handled correctly. - $str = mb_substr( - $str, - ((!empty($str[1])) && ($str[1] === '@')) ? 2 : 1, - mb_strlen($str), - 'UTF-8' - ); - } - if ((isset($str[0])) && (($str[0] === '`') - || ($str[0] === '"') || ($str[0] === '\'')) - ) { - $quote = $str[0]; - $str = str_replace($quote . $quote, $quote, $str); - $str = mb_substr($str, 1, -1, 'UTF-8'); - } - return $str; - } - return $this->token; - } - - /** - * Converts the token into an inline token by replacing tabs and new lines. - * - * @return string - */ - public function getInlineToken() - { - return str_replace( - array("\r", "\n", "\t"), - array('\r', '\n', '\t'), - $this->token - ); - } -} diff --git a/libraries/sql-parser/src/TokensList.php b/libraries/sql-parser/src/TokensList.php deleted file mode 100644 index 10ff56e717..0000000000 --- a/libraries/sql-parser/src/TokensList.php +++ /dev/null @@ -1,208 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class TokensList implements \ArrayAccess -{ - - /** - * The array of tokens. - * - * @var array - */ - public $tokens = array(); - - /** - * The count of tokens. - * - * @var int - */ - public $count = 0; - - /** - * The index of the next token to be returned. - * - * @var int - */ - public $idx = 0; - - /** - * Constructor. - * - * @param array $tokens The initial array of tokens. - * @param int $count The count of tokens in the initial array. - */ - public function __construct(array $tokens = array(), $count = -1) - { - if (!empty($tokens)) { - $this->tokens = $tokens; - if ($count === -1) { - $this->count = count($tokens); - } - } - } - - /** - * Builds an array of tokens by merging their raw value. - * - * @param string|Token[]|TokensList $list The tokens to be built. - * - * @return string - */ - public static function build($list) - { - if (is_string($list)) { - return $list; - } - - if ($list instanceof TokensList) { - $list = $list->tokens; - } - - $ret = ''; - if (is_array($list)) { - foreach ($list as $tok) { - $ret .= $tok->token; - } - } - return $ret; - } - - /** - * Adds a new token. - * - * @param Token $token Token to be added in list. - * - * @return void - */ - public function add(Token $token) - { - $this->tokens[$this->count++] = $token; - } - - /** - * Gets the next token. Skips any irrelevant token (whitespaces and - * comments). - * - * @return Token - */ - public function getNext() - { - for (; $this->idx < $this->count; ++$this->idx) { - if (($this->tokens[$this->idx]->type !== Token::TYPE_WHITESPACE) - && ($this->tokens[$this->idx]->type !== Token::TYPE_COMMENT) - ) { - return $this->tokens[$this->idx++]; - } - } - return null; - } - - /** - * Gets the next token. - * - * @param int $type The type. - * - * @return Token - */ - public function getNextOfType($type) - { - for (; $this->idx < $this->count; ++$this->idx) { - if ($this->tokens[$this->idx]->type === $type) { - return $this->tokens[$this->idx++]; - } - } - return null; - } - - /** - * Gets the next token. - * - * @param int $type The type of the token. - * @param string $value The value of the token. - * - * @return Token - */ - public function getNextOfTypeAndValue($type, $value) - { - for (; $this->idx < $this->count; ++$this->idx) { - if (($this->tokens[$this->idx]->type === $type) - && ($this->tokens[$this->idx]->value === $value) - ) { - return $this->tokens[$this->idx++]; - } - } - return null; - } - - /** - * Sets an value inside the container. - * - * @param int $offset The offset to be set. - * @param Token $value The token to be saved. - * - * @return void - */ - public function offsetSet($offset, $value) - { - if ($offset === null) { - $this->tokens[$this->count++] = $value; - } else { - $this->tokens[$offset] = $value; - } - } - - /** - * Gets a value from the container. - * - * @param int $offset The offset to be returned. - * - * @return Token - */ - public function offsetGet($offset) - { - return $offset < $this->count ? $this->tokens[$offset] : null; - } - - /** - * Checks if an offset was previously set. - * - * @param int $offset The offset to be checked. - * - * @return bool - */ - public function offsetExists($offset) - { - return $offset < $this->count; - } - - /** - * Unsets the value of an offset. - * - * @param int $offset The offset to be unset. - * - * @return void - */ - public function offsetUnset($offset) - { - unset($this->tokens[$offset]); - --$this->count; - for ($i = $offset; $i < $this->count; ++$i) { - $this->tokens[$i] = $this->tokens[$i + 1]; - } - unset($this->tokens[$this->count]); - } -} diff --git a/libraries/sql-parser/src/UtfString.php b/libraries/sql-parser/src/UtfString.php deleted file mode 100644 index 5f4ba12f9d..0000000000 --- a/libraries/sql-parser/src/UtfString.php +++ /dev/null @@ -1,218 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class UtfString implements \ArrayAccess -{ - - /** - * The raw, multi-byte string. - * - * @var string - */ - public $str = ''; - - /** - * The index of current byte. - * - * For ASCII strings, the byte index is equal to the character index. - * - * @var int - */ - public $byteIdx = 0; - - /** - * The index of current character. - * - * For non-ASCII strings, some characters occupy more than one byte and - * the character index will have a lower value than the byte index. - * - * @var int - */ - public $charIdx = 0; - - /** - * The length of the string (in bytes). - * - * @var int - */ - public $byteLen = 0; - - /** - * The length of the string (in characters). - * - * @var int - */ - public $charLen = 0; - - /** - * Constructor. - * - * @param string $str The string. - */ - public function __construct($str) - { - $this->str = $str; - $this->byteIdx = 0; - $this->charIdx = 0; - // TODO: `strlen($str)` might return a wrong length when function - // overloading is enabled. - // https://php.net/manual/ro/mbstring.overload.php - $this->byteLen = strlen($str); - $this->charLen = mb_strlen($str, 'UTF-8'); - } - - /** - * Checks if the given offset exists. - * - * @param int $offset The offset to be checked. - * - * @return bool - */ - public function offsetExists($offset) - { - return ($offset >= 0) && ($offset < $this->charLen); - } - - /** - * Gets the character at given offset. - * - * @param int $offset The offset to be returned. - * - * @return string - */ - public function offsetGet($offset) - { - if (($offset < 0) || ($offset >= $this->charLen)) { - return null; - } - - $delta = $offset - $this->charIdx; - - if ($delta > 0) { - // Fast forwarding. - while ($delta-- > 0) { - $this->byteIdx += static::getCharLength($this->str[$this->byteIdx]); - ++$this->charIdx; - } - } elseif ($delta < 0) { - // Rewinding. - while ($delta++ < 0) { - do { - $byte = ord($this->str[--$this->byteIdx]); - } while ((128 <= $byte) && ($byte < 192)); - --$this->charIdx; - } - } - - $bytesCount = static::getCharLength($this->str[$this->byteIdx]); - - $ret = ''; - for ($i = 0; $bytesCount-- > 0; ++$i) { - $ret .= $this->str[$this->byteIdx + $i]; - } - - return $ret; - } - - /** - * Sets the value of a character. - * - * @param int $offset The offset to be set. - * @param string $value The value to be set. - * - * @throws \Exception Not implemented. - * - * @return void - */ - public function offsetSet($offset, $value) - { - throw new \Exception('Not implemented.'); - } - - /** - * Unsets an index. - * - * @param int $offset The value to be unset. - * - * @throws \Exception Not implemented. - * - * @return void - */ - public function offsetUnset($offset) - { - throw new \Exception('Not implemented.'); - } - - /** - * Gets the length of an UTF-8 character. - * - * According to RFC 3629, a UTF-8 character can have at most 4 bytes. - * However, this implementation supports UTF-8 characters containing up to 6 - * bytes. - * - * @param string $byte The byte to be analyzed. - * - * @see http://tools.ietf.org/html/rfc3629 - * - * @return int - */ - public static function getCharLength($byte) - { - $byte = ord($byte); - if ($byte < 128) { - return 1; - } elseif ($byte < 224) { - return 2; - } elseif ($byte < 240) { - return 3; - } elseif ($byte < 248) { - return 4; - } elseif ($byte < 252) { - return 5; // unofficial - } - return 6; // unofficial - } - - /** - * Returns the length in characters of the string. - * - * @return int - */ - public function length() - { - return $this->charLen; - } - - /** - * Returns the contained string. - * - * @return string - */ - public function __toString() - { - return $this->str; - } -} diff --git a/libraries/sql-parser/src/Utils/BufferedQuery.php b/libraries/sql-parser/src/Utils/BufferedQuery.php deleted file mode 100644 index 1aaa9d7910..0000000000 --- a/libraries/sql-parser/src/Utils/BufferedQuery.php +++ /dev/null @@ -1,417 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class BufferedQuery -{ - - // Constants that describe the current status of the parser. - - // A string is being parsed. - const STATUS_STRING = 16; // 0001 0000 - const STATUS_STRING_SINGLE_QUOTES = 17; // 0001 0001 - const STATUS_STRING_DOUBLE_QUOTES = 18; // 0001 0010 - const STATUS_STRING_BACKTICK = 20; // 0001 0100 - - // A comment is being parsed. - const STATUS_COMMENT = 32; // 0010 0000 - const STATUS_COMMENT_BASH = 33; // 0010 0001 - const STATUS_COMMENT_C = 34; // 0010 0010 - const STATUS_COMMENT_SQL = 36; // 0010 0100 - - /** - * The query that is being processed. - * - * This field can be modified just by appending to it! - * - * @var string - */ - public $query = ''; - - /** - * The options of this parser. - * - * @var array - */ - public $options = array(); - - /** - * The last delimiter used. - * - * @var string - */ - public $delimiter; - - /** - * The length of the delimiter. - * - * @var int - */ - public $delimiterLen; - - /** - * The current status of the parser. - * - * @var int - */ - public $status; - - /** - * The last incomplete query that was extracted. - * - * @var string - */ - public $current = ''; - - /** - * Constructor. - * - * @param string $query The query to be parsed. - * @param array $options The options of this parser. - */ - public function __construct($query = '', array $options = array()) - { - // Merges specified options with defaults. - $this->options = array_merge( - array( - - /** - * The starting delimiter. - * - * @var string - */ - 'delimiter' => ';', - - /** - * Whether `DELIMITER` statements should be parsed. - * - * @var bool - */ - 'parse_delimiter' => false, - - /** - * Whether a delimiter should be added at the end of the - * statement. - * - * @var bool - */ - 'add_delimiter' => false, - ), - $options - ); - - $this->query = $query; - $this->setDelimiter($this->options['delimiter']); - } - - /** - * Sets the delimiter. - * - * Used to update the length of it too. - * - * @param string $delimiter - */ - public function setDelimiter($delimiter) - { - $this->delimiter = $delimiter; - $this->delimiterLen = strlen($delimiter); - } - - /** - * Extracts a statement from the buffer. - * - * @param bool $end Whether the end of the buffer was reached. - * - * @return string - */ - public function extract($end = false) - { - /** - * The last parsed position. - * - * This is statically defined because it is not used outside anywhere - * outside this method and there is probably a (minor) performance - * improvement to it. - * - * @var int - */ - static $i = 0; - - if (empty($this->query)) { - return false; - } - - /** - * The length of the buffer. - * - * @var int $len - */ - $len = strlen($this->query); - - /** - * The last index of the string that is going to be parsed. - * - * There must be a few characters left in the buffer so the parser can - * avoid confusing some symbols that may have multiple meanings. - * - * For example, if the buffer ends in `-` that may be an operator or the - * beginning of a comment. - * - * Another example if the buffer ends in `DELIMITE`. The parser is going - * to require a few more characters because that may be a part of the - * `DELIMITER` keyword or just a column named `DELIMITE`. - * - * Those extra characters are required only if there is more data - * expected (the end of the buffer was not reached). - * - * @var int $loopLen - */ - $loopLen = $end ? $len : $len - 16; - - for (; $i < $loopLen; ++$i) { - /** - * Handling backslash. - * - * Even if the next character is a special character that should be - * treated differently, because of the preceding backslash, it will - * be ignored. - */ - if (($this->status & static::STATUS_COMMENT == 0) && ($this->query[$i] === '\\')) { - $this->current .= $this->query[$i] . $this->query[++$i]; - continue; - } - - /* - * Handling special parses statuses. - */ - if ($this->status === static::STATUS_STRING_SINGLE_QUOTES) { - // Single-quoted strings like 'foo'. - if ($this->query[$i] === '\'') { - $this->status = 0; - } - $this->current .= $this->query[$i]; - continue; - } elseif ($this->status === static::STATUS_STRING_DOUBLE_QUOTES) { - // Double-quoted strings like "bar". - if ($this->query[$i] === '"') { - $this->status = 0; - } - $this->current .= $this->query[$i]; - continue; - } elseif ($this->status === static::STATUS_STRING_BACKTICK) { - if ($this->query[$i] === '`') { - $this->status = 0; - } - $this->current .= $this->query[$i]; - continue; - } elseif (($this->status === static::STATUS_COMMENT_BASH) - || ($this->status === static::STATUS_COMMENT_SQL) - ) { - // Bash-like (#) or SQL-like (-- ) comments end in new line. - if ($this->query[$i] === "\n") { - $this->status = 0; - } - continue; - } elseif ($this->status === static::STATUS_COMMENT_C) { - // C-like comments end in */. - if (($this->query[$i - 1] === '*') && ($this->query[$i] === '/')) { - $this->status = 0; - } - continue; - } - - /* - * Checking if a string started. - */ - if ($this->query[$i] === '\'') { - $this->status = static::STATUS_STRING_SINGLE_QUOTES; - $this->current .= $this->query[$i]; - continue; - } elseif ($this->query[$i] === '"') { - $this->status = static::STATUS_STRING_DOUBLE_QUOTES; - $this->current .= $this->query[$i]; - continue; - } elseif ($this->query[$i] === '`') { - $this->status = static::STATUS_STRING_BACKTICK; - $this->current .= $this->query[$i]; - continue; - } - - /* - * Checking if a comment started. - */ - if ($this->query[$i] === '#') { - $this->status = static::STATUS_COMMENT_BASH; - continue; - } elseif (($i + 2 < $len) - && ($this->query[$i] === '-') - && ($this->query[$i + 1] === '-') - && (Context::isWhitespace($this->query[$i + 2])) - ) { - $this->status = static::STATUS_COMMENT_SQL; - continue; - } elseif (($i + 2 < $len) - && ($this->query[$i] === '/') - && ($this->query[$i + 1] === '*') - && ($this->query[$i + 2] !== '!') - ) { - $this->status = static::STATUS_COMMENT_C; - continue; - } - - /* - * Handling `DELIMITER` statement. - * - * The code below basically checks for - * `strtoupper(substr($this->query, $i, 9)) === 'DELIMITER'` - * - * This optimization makes the code about 3 times faster. - * - * `DELIMITER` is not being considered a keyword. The only context - * it has a special meaning is when it is the beginning of a - * statement. This is the reason for the last condition. - */ - if (($i + 9 < $len) - && (($this->query[$i ] === 'D') || ($this->query[$i ] === 'd')) - && (($this->query[$i + 1] === 'E') || ($this->query[$i + 1] === 'e')) - && (($this->query[$i + 2] === 'L') || ($this->query[$i + 2] === 'l')) - && (($this->query[$i + 3] === 'I') || ($this->query[$i + 3] === 'i')) - && (($this->query[$i + 4] === 'M') || ($this->query[$i + 4] === 'm')) - && (($this->query[$i + 5] === 'I') || ($this->query[$i + 5] === 'i')) - && (($this->query[$i + 6] === 'T') || ($this->query[$i + 6] === 't')) - && (($this->query[$i + 7] === 'E') || ($this->query[$i + 7] === 'e')) - && (($this->query[$i + 8] === 'R') || ($this->query[$i + 8] === 'r')) - && (Context::isWhitespace($this->query[$i + 9])) - && (trim($this->current) === '') - ) { - // Saving the current index to be able to revert any parsing - // done in this block. - $iBak = $i; - $i += 9; // Skipping `DELIMITER`. - - // Skipping whitespaces. - while (($i < $len) && (Context::isWhitespace($this->query[$i]))) { - ++$i; - } - - // Parsing the delimiter. - $delimiter = ''; - while (($i < $len) && (!Context::isWhitespace($this->query[$i]))) { - $delimiter .= $this->query[$i++]; - } - - // Checking if the delimiter definition ended. - if (($delimiter != '') - && ((($i < $len) && (Context::isWhitespace($this->query[$i]))) - || (($i === $len) && ($end))) - ) { - // Saving the delimiter. - $this->setDelimiter($delimiter); - - // Whether this statement should be returned or not. - $ret = ''; - if (!empty($this->options['parse_delimiter'])) { - // Appending the `DELIMITER` statement that was just - // found to the current statement. - $ret = trim( - $this->current . ' ' . substr($this->query, $iBak, $i - $iBak) - ); - } - - // Removing the statement that was just extracted from the - // query. - $this->query = substr($this->query, $i); - $i = 0; - - // Resetting the current statement. - $this->current = ''; - - return $ret; - } - - // Incomplete statement. Reverting - $i = $iBak; - return false; - } - - /* - * Checking if the current statement finished. - * - * The first letter of the delimiter is being checked as an - * optimization. This code is almost as fast as the one above. - * - * There is no point in checking if two strings match if not even - * the first letter matches. - */ - if (($this->query[$i] === $this->delimiter[0]) - && (($this->delimiterLen === 1) - || (substr($this->query, $i, $this->delimiterLen) === $this->delimiter)) - ) { - // Saving the statement that just ended. - $ret = $this->current; - - // If needed, adds a delimiter at the end of the statement. - if (!empty($this->options['add_delimiter'])) { - $ret .= $this->delimiter; - } - - // Removing the statement that was just extracted from the - // query. - $this->query = substr($this->query, $i + $this->delimiterLen); - $i = 0; - - // Resetting the current statement. - $this->current = ''; - - // Returning the statement. - return trim($ret); - } - - /* - * Appending current character to current statement. - */ - $this->current .= $this->query[$i]; - } - - if (($end) && ($i === $len)) { - // If the end of the buffer was reached, the buffer is emptied and - // the current statement that was extracted is returned. - $ret = $this->current; - - // Emptying the buffer. - $this->query = ''; - $i = 0; - - // Resetting the current statement. - $this->current = ''; - - // Returning the statement. - return trim($ret); - } - - return ''; - } -} diff --git a/libraries/sql-parser/src/Utils/Error.php b/libraries/sql-parser/src/Utils/Error.php deleted file mode 100644 index a9c0814fcf..0000000000 --- a/libraries/sql-parser/src/Utils/Error.php +++ /dev/null @@ -1,100 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Error -{ - - /** - * Gets the errors of a lexer and a parser. - * - * @param array $objs Objects from where the errors will be extracted. - * - * @return array Each element of the array represents an error. - * `$err[0]` holds the error message. - * `$err[1]` holds the error code. - * `$err[2]` holds the string that caused the issue. - * `$err[3]` holds the position of the string. - * (i.e. `array($msg, $code, $str, $pos)`) - */ - public static function get($objs) - { - $ret = array(); - - foreach ($objs as $obj) { - if ($obj instanceof Lexer) { - foreach ($obj->errors as $err) { - $ret[] = array( - $err->getMessage(), - $err->getCode(), - $err->ch, - $err->pos - ); - } - } elseif ($obj instanceof Parser) { - foreach ($obj->errors as $err) { - $ret[] = array( - $err->getMessage(), - $err->getCode(), - $err->token->token, - $err->token->position - ); - } - } - } - - return $ret; - } - - /** - * Formats the specified errors - * - * @param array $errors The errors to be formatted. - * @param string $format The format of an error. - * '$1$d' is replaced by the position of this error. - * '$2$s' is replaced by the error message. - * '$3$d' is replaced by the error code. - * '$4$s' is replaced by the string that caused the - * issue. - * '$5$d' is replaced by the position of the string. - * @return array - */ - public static function format( - $errors, - $format = '#%1$d: %2$s (near "%4$s" at position %5$d)' - ) { - $ret = array(); - - $i = 0; - foreach ($errors as $key => $err) { - $ret[$key] = sprintf( - $format, - ++$i, - $err[0], - $err[1], - $err[2], - $err[3] - ); - } - - return $ret; - } -} diff --git a/libraries/sql-parser/src/Utils/Formatter.php b/libraries/sql-parser/src/Utils/Formatter.php deleted file mode 100644 index 266440bcd6..0000000000 --- a/libraries/sql-parser/src/Utils/Formatter.php +++ /dev/null @@ -1,532 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Formatter -{ - - /** - * The formatting options. - * - * @var array - */ - public $options; - - /** - * Clauses that must be inlined. - * - * These clauses usually are short and it's nicer to have them inline. - * - * @var array - */ - public static $INLINE_CLAUSES = array( - 'CREATE' => true, - 'LIMIT' => true, - 'PARTITION BY' => true, - 'PARTITION' => true, - 'PROCEDURE' => true, - 'SUBPARTITION BY' => true, - 'VALUES' => true, - ); - - /** - * Constructor. - * - * @param array $options The formatting options. - */ - public function __construct(array $options = array()) - { - // The specified formatting options are merged with the default values. - $this->options = array_merge( - array( - - /** - * The format of the result. - * - * @var string The type ('text', 'cli' or 'html') - */ - 'type' => php_sapi_name() == 'cli' ? 'cli' : 'text', - - /** - * The line ending used. - * By default, for text this is "\n" and for HTML this is "
". - * - * @var string - */ - 'line_ending' => $this->options['type'] == 'html' ? '
' : "\n", - - /** - * The string used for indentation. - * - * @var string - */ - 'indentation' => " ", - - /** - * Whether comments should be removed or not. - * - * @var bool - */ - 'remove_comments' => false, - - /** - * Whether each clause should be on a new line. - * - * @var bool - */ - 'clause_newline' => true, - - /** - * Whether each part should be on a new line. - * Parts are delimited by brackets and commas. - * - * @var bool - */ - 'parts_newline' => true, - - /** - * Whether each part of each clause should be indented. - * - * @var bool - */ - 'indent_parts' => true, - - /** - * The styles used for HTML formatting. - * array($type, $flags, $span, $callback) - * - * @var array[] - */ - 'formats' => array( - array( - 'type' => Token::TYPE_KEYWORD, - 'flags' => Token::FLAG_KEYWORD_RESERVED, - 'html' => 'class="sql-reserved"', - 'cli' => "\e[35m", - 'function' => 'strtoupper', - ), - array( - 'type' => Token::TYPE_KEYWORD, - 'flags' => 0, - 'html' => 'class="sql-keyword"', - 'cli' => "\e[95m", - 'function' => 'strtoupper', - ), - array( - 'type' => Token::TYPE_COMMENT, - 'flags' => 0, - 'html' => 'class="sql-comment"', - 'cli' => "\e[37m", - 'function' => '', - ), - array( - 'type' => Token::TYPE_BOOL, - 'flags' => 0, - 'html' => 'class="sql-atom"', - 'cli' => "\e[36m", - 'function' => 'strtoupper', - ), - array( - 'type' => Token::TYPE_NUMBER, - 'flags' => 0, - 'html' => 'class="sql-number"', - 'cli' => "\e[92m", - 'function' => 'strtolower', - ), - array( - 'type' => Token::TYPE_STRING, - 'flags' => 0, - 'html' => 'class="sql-string"', - 'cli' => "\e[91m", - 'function' => '', - ), - array( - 'type' => Token::TYPE_SYMBOL, - 'flags' => 0, - 'html' => 'class="sql-variable"', - 'cli' => "\e[36m", - 'function' => '', - ), - ) - ), - $options - ); - - // `parts_newline` requires `clause_newline` - $this->options['parts_newline'] &= $this->options['clause_newline']; - } - - /** - * Formats the given list of tokens. - * - * @param TokensList $list The list of tokens. - * - * @return string - */ - public function formatList($list) - { - - /** - * The query to be returned. - * - * @var string $ret - */ - $ret = ''; - - /** - * The indentation level. - * - * @var int $indent - */ - $indent = 0; - - /** - * Whether the line ended. - * - * @var bool $lineEnded - */ - $lineEnded = false; - - /** - * The name of the last clause. - * - * @var string $lastClause - */ - $lastClause = ''; - - /** - * A stack that keeps track of the indentation level every time a new - * block is found. - * - * @var array $blocksIndentation - */ - $blocksIndentation = array(); - - /** - * A stack that keeps track of the line endings every time a new block - * is found. - * - * @var array $blocksLineEndings - */ - $blocksLineEndings = array(); - - /** - * Whether clause's options were formatted. - * - * @var bool $formattedOptions - */ - $formattedOptions = false; - - /** - * Previously parsed token. - * - * @var Token $prev - */ - $prev = null; - - /** - * Comments are being formatted separately to maintain the whitespaces - * before and after them. - * - * @var string $comment - */ - $comment = ''; - - // In order to be able to format the queries correctly, the next token - // must be taken into consideration. The loop below uses two pointers, - // `$prev` and `$curr` which store two consecutive tokens. - // Actually, at every iteration the previous token is being used. - for ($list->idx = 0; $list->idx < $list->count; ++$list->idx) { - /** - * Token parsed at this moment. - * - * @var Token $curr - */ - $curr = $list->tokens[$list->idx]; - - if ($curr->type === Token::TYPE_WHITESPACE) { - // Whitespaces are skipped because the formatter adds its own. - continue; - } elseif ($curr->type === Token::TYPE_COMMENT) { - // Whether the comments should be parsed. - if (!empty($this->options['remove_comments'])) { - continue; - } - - if ($list->tokens[$list->idx - 1]->type === Token::TYPE_WHITESPACE) { - // The whitespaces before and after are preserved for - // formatting reasons. - $comment .= $list->tokens[$list->idx - 1]->token; - } - $comment .= $this->toString($curr); - if (($list->tokens[$list->idx + 1]->type === Token::TYPE_WHITESPACE) - && ($list->tokens[$list->idx + 2]->type !== Token::TYPE_COMMENT) - ) { - // Adding the next whitespace only there is no comment that - // follows it immediately which may cause adding a - // whitespace twice. - $comment .= $list->tokens[$list->idx + 1]->token; - } - - // Everything was handled here, no need to continue. - continue; - } - - // Checking if pointers were initialized. - if ($prev !== null) { - // Checking if a new clause started. - if (static::isClause($prev) !== false) { - $lastClause = $prev->value; - $formattedOptions = false; - } - - // The options of a clause should stay on the same line and everything that follows. - if (($this->options['parts_newline']) - && (!$formattedOptions) - && (empty(self::$INLINE_CLAUSES[$lastClause])) - && (($curr->type !== Token::TYPE_KEYWORD) - || (($curr->type === Token::TYPE_KEYWORD) - && ($curr->flags & Token::FLAG_KEYWORD_FUNCTION))) - ) { - $formattedOptions = true; - $lineEnded = true; - ++$indent; - } - - // Checking if this clause ended. - if ($tmp = static::isClause($curr)) { - if (($tmp == 2) || ($this->options['clause_newline'])) { - $lineEnded = true; - if ($this->options['parts_newline']) { - --$indent; - } - } - } - - // Indenting BEGIN ... END blocks. - if (($prev->type === Token::TYPE_KEYWORD) && ($prev->value === 'BEGIN')) { - $lineEnded = true; - array_push($blocksIndentation, $indent); - ++$indent; - } elseif (($curr->type === Token::TYPE_KEYWORD) && ($curr->value === 'END')) { - $lineEnded = true; - $indent = array_pop($blocksIndentation); - } - - // Formatting fragments delimited by comma. - if (($prev->type === Token::TYPE_OPERATOR) && ($prev->value === ',')) { - // Fragments delimited by a comma are broken into multiple - // pieces only if the clause is not inlined or this fragment - // is between brackets that are on new line. - if (((empty(self::$INLINE_CLAUSES[$lastClause])) - && ($this->options['parts_newline'])) - || (end($blocksLineEndings) === true) - ) { - $lineEnded = true; - } - } - - // Handling brackets. - // Brackets are indented only if the length of the fragment between - // them is longer than 30 characters. - if (($prev->type === Token::TYPE_OPERATOR) && ($prev->value === '(')) { - array_push($blocksIndentation, $indent); - if (static::getGroupLength($list) > 30) { - ++$indent; - $lineEnded = true; - } - array_push($blocksLineEndings, $lineEnded); - } elseif (($curr->type === Token::TYPE_OPERATOR) && ($curr->value === ')')) { - $indent = array_pop($blocksIndentation); - $lineEnded |= array_pop($blocksLineEndings); - } - - // Delimiter must be placed on the same line with the last - // clause. - if ($curr->type === Token::TYPE_DELIMITER) { - $lineEnded = false; - } - - // Adding the token. - $ret .= $this->toString($prev); - - // Finishing the line. - if ($lineEnded) { - if ($indent < 0) { - // TODO: Make sure this never occurs and delete it. - $indent = 0; - } - - if ($curr->type !== Token::TYPE_COMMENT) { - $ret .= $this->options['line_ending'] - . str_repeat($this->options['indentation'], $indent); - } - $lineEnded = false; - } else { - // If the line ended there is no point in adding whitespaces. - // Also, some tokens do not have spaces before or after them. - if (!((($prev->type === Token::TYPE_OPERATOR) && (($prev->value === '.') || ($prev->value === '('))) - // No space after . ( - || (($curr->type === Token::TYPE_OPERATOR) && (($curr->value === '.') || ($curr->value === ',') || ($curr->value === '(') || ($curr->value === ')'))) - // No space before . , ( ) - || (($curr->type === Token::TYPE_DELIMITER)) && (mb_strlen($curr->value, 'UTF-8') < 2)) - // A space after delimiters that are longer than 2 characters. - || ($prev->value === 'DELIMITER') - ) { - $ret .= ' '; - } - } - } - - if (!empty($comment)) { - $ret .= $comment; - $comment = ''; - } - - // Iteration finished, consider current token as previous. - $prev = $curr; - } - - return $ret; - } - - /** - * Tries to print the query and returns the result. - * - * @param Token $token The token to be printed. - * - * @return string - */ - public function toString($token) - { - $text = $token->token; - - foreach ($this->options['formats'] as $format) { - if (($token->type === $format['type']) - && (($token->flags & $format['flags']) === $format['flags']) - ) { - // Running transformation function. - if (!empty($format['function'])) { - $func = $format['function']; - $text = $func($text); - } - - // Formatting HTML. - if ($this->options['type'] === 'html') { - return '' . $text . ''; - } elseif ($this->options['type'] === 'cli') { - return $format['cli'] . $text; - } - - break; - } - } - - if ($this->options['type'] === 'cli') { - return "\e[39m" . $text; - } - return $text; - } - - /** - * Formats a query. - * - * @param string $query The query to be formatted - * @param array $options The formatting options. - * - * @return string The formatted string. - */ - public static function format($query, array $options = array()) - { - $lexer = new Lexer($query); - $formatter = new Formatter($options); - return $formatter->formatList($lexer->list); - } - - /** - * Computes the length of a group. - * - * A group is delimited by a pair of brackets. - * - * @param TokensList $list The list of tokens. - * - * @return int - */ - public static function getGroupLength($list) - { - /** - * The number of opening brackets found. - * This counter starts at one because by the time this function called, - * the list already advanced one position and the opening bracket was - * already parsed. - * - * @var int $count - */ - $count = 1; - - /** - * The length of this group. - * - * @var int $length - */ - $length = 0; - - for ($idx = $list->idx; $idx < $list->count; ++$idx) { - // Counting the brackets. - if ($list->tokens[$idx]->type === Token::TYPE_OPERATOR) { - if ($list->tokens[$idx]->value === '(') { - ++$count; - } elseif ($list->tokens[$idx]->value === ')') { - --$count; - if ($count == 0) { - break; - } - } - } - - // Keeping track of this group's length. - $length += mb_strlen($list->tokens[$idx]->value, 'UTF-8'); - } - - return $length; - } - - /** - * Checks if a token is a statement or a clause inside a statement. - * - * @param Token $token The token to be checked. - * - * @return int|bool - */ - public static function isClause($token) - { - if ((($token->type === Token::TYPE_NONE) && (strtoupper($token->token) === 'DELIMITER')) - || (($token->type === Token::TYPE_KEYWORD) && (isset(Parser::$STATEMENT_PARSERS[$token->value]))) - ) { - return 2; - } elseif (($token->type === Token::TYPE_KEYWORD) && (isset(Parser::$KEYWORD_PARSERS[$token->value]))) { - return 1; - } - return false; - } -} diff --git a/libraries/sql-parser/src/Utils/Misc.php b/libraries/sql-parser/src/Utils/Misc.php deleted file mode 100644 index cec5653688..0000000000 --- a/libraries/sql-parser/src/Utils/Misc.php +++ /dev/null @@ -1,114 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Misc -{ - - /** - * Gets a list of all aliases and their original names. - * - * @param SelectStatement $statement The statement to be processed. - * @param string $database The name of the database. - * - * @return array - */ - public static function getAliases($statement, $database) - { - if (!($statement instanceof SelectStatement) - || (empty($statement->expr)) - || (empty($statement->from)) - ) { - return array(); - } - - $retval = array(); - - $tables = array(); - - /** - * Expressions that may contain aliases. - * These are extracted from `FROM` and `JOIN` keywords. - * - * @var Expression[] $expressions - */ - $expressions = $statement->from; - - // Adding expressions from JOIN. - if (!empty($statement->join)) { - foreach ($statement->join as $join) { - $expressions[] = $join->expr; - } - } - - foreach ($expressions as $expr) { - if ((!isset($expr->table)) || ($expr->table === '')) { - continue; - } - - $thisDb = ((isset($expr->database)) && ($expr->database !== '')) ? - $expr->database : $database; - - if (!isset($retval[$thisDb])) { - $retval[$thisDb] = array( - 'alias' => null, - 'tables' => array(), - ); - } - - if (!isset($retval[$thisDb]['tables'][$expr->table])) { - $retval[$thisDb]['tables'][$expr->table] = array( - 'alias' => ((isset($expr->alias)) && ($expr->alias !== '')) ? - $expr->alias : null, - 'columns' => array(), - ); - } - - if (!isset($tables[$thisDb])) { - $tables[$thisDb] = array(); - } - $tables[$thisDb][$expr->alias] = $expr->table; - } - - foreach ($statement->expr as $expr) { - if ((!isset($expr->column)) || ($expr->column === '') - || (!isset($expr->alias)) || ($expr->alias === '') - ) { - continue; - } - - $thisDb = ((isset($expr->database)) && ($expr->database !== '')) ? - $expr->database : $database; - - if ((isset($expr->table)) && ($expr->table !== '')) { - $thisTable = isset($tables[$thisDb][$expr->table]) ? - $tables[$thisDb][$expr->table] : $expr->table; - $retval[$thisDb]['tables'][$thisTable]['columns'][$expr->column] = $expr->alias; - } else { - foreach ($retval[$thisDb]['tables'] as &$table) { - $table['columns'][$expr->column] = $expr->alias; - } - } - } - - return $retval; - } -} diff --git a/libraries/sql-parser/src/Utils/Query.php b/libraries/sql-parser/src/Utils/Query.php deleted file mode 100644 index d76e6bb723..0000000000 --- a/libraries/sql-parser/src/Utils/Query.php +++ /dev/null @@ -1,787 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Query -{ - - /** - * Functions that set the flag `is_func`. - * - * @var array - */ - public static $FUNCTIONS = array( - 'SUM', 'AVG', 'STD', 'STDDEV', 'MIN', 'MAX', 'BIT_OR', 'BIT_AND' - ); - - /** - * Gets an array with flags this statement has. - * - * @param Statement $statement The statement to be processed. - * @param bool $all If `false`, false values will not be included. - * - * @return array - */ - public static function getFlags($statement, $all = false) - { - $flags = array(); - if ($all) { - $flags = array( - - /** - * select ... DISTINCT ... - */ - 'distinct' => false, - - /** - * drop ... DATABASE ... - */ - 'drop_database' => false, - - /** - * ... GROUP BY ... - */ - 'group' => false, - - /** - * ... HAVING ... - */ - 'having' => false, - - /** - * INSERT ... - * or - * REPLACE ... - * or - * DELETE ... - */ - 'is_affected' => false, - - /** - * select ... PROCEDURE ANALYSE( ... ) ... - */ - 'is_analyse' => false, - - /** - * select COUNT( ... ) ... - */ - 'is_count' => false, - - /** - * DELETE ... - */ - 'is_delete' => false, // @deprecated; use `querytype` - - /** - * EXPLAIN ... - */ - 'is_explain' => false, // @deprecated; use `querytype` - - /** - * select ... INTO OUTFILE ... - */ - 'is_export' => false, - - /** - * select FUNC( ... ) ... - */ - 'is_func' => false, - - /** - * select ... GROUP BY ... - * or - * select ... HAVING ... - */ - 'is_group' => false, - - /** - * INSERT ... - * or - * REPLACE ... - * or - * TODO: LOAD DATA ... - */ - 'is_insert' => false, - - /** - * ANALYZE ... - * or - * CHECK ... - * or - * CHECKSUM ... - * or - * OPTIMIZE ... - * or - * REPAIR ... - */ - 'is_maint' => false, - - /** - * CALL ... - */ - 'is_procedure' => false, - - /** - * REPLACE ... - */ - 'is_replace' => false, // @deprecated; use `querytype` - - /** - * SELECT ... - */ - 'is_select' => false, // @deprecated; use `querytype` - - /** - * SHOW ... - */ - 'is_show' => false, // @deprecated; use `querytype` - - /** - * Contains a subquery. - */ - 'is_subquery' => false, - - /** - * ... JOIN ... - */ - 'join' => false, - - /** - * ... LIMIT ... - */ - 'limit' => false, - - /** - * TODO - */ - 'offset' => false, - - /** - * ... ORDER ... - */ - 'order' => false, - - /** - * The type of the query (which is usually the first keyword of - * the statement). - */ - 'querytype' => false, - - /** - * Whether a page reload is required. - */ - 'reload' => false, - - /** - * SELECT ... FROM ... - */ - 'select_from' => false, - - /** - * ... UNION ... - */ - 'union' => false - ); - } - - if ($statement instanceof AlterStatement) { - $flags['querytype'] = 'ALTER'; - $flags['reload'] = true; - } elseif ($statement instanceof CreateStatement) { - $flags['querytype'] = 'CREATE'; - $flags['reload'] = true; - } elseif ($statement instanceof AnalyzeStatement) { - $flags['querytype'] = 'ANALYZE'; - $flags['is_maint'] = true; - } elseif ($statement instanceof CheckStatement) { - $flags['querytype'] = 'CHECK'; - $flags['is_maint'] = true; - } elseif ($statement instanceof ChecksumStatement) { - $flags['querytype'] = 'CHECKSUM'; - $flags['is_maint'] = true; - } elseif ($statement instanceof OptimizeStatement) { - $flags['querytype'] = 'OPTIMIZE'; - $flags['is_maint'] = true; - } elseif ($statement instanceof RepairStatement) { - $flags['querytype'] = 'REPAIR'; - $flags['is_maint'] = true; - } elseif ($statement instanceof CallStatement) { - $flags['querytype'] = 'CALL'; - $flags['is_procedure'] = true; - } elseif ($statement instanceof DeleteStatement) { - $flags['querytype'] = 'DELETE'; - $flags['is_delete'] = true; - $flags['is_affected'] = true; - } elseif ($statement instanceof DropStatement) { - $flags['querytype'] = 'DROP'; - $flags['reload'] = true; - - if (($statement->options->has('DATABASE') - || ($statement->options->has('SCHEMA'))) - ) { - $flags['drop_database'] = true; - } - } elseif ($statement instanceof ExplainStatement) { - $flags['querytype'] = 'EXPLAIN'; - $flags['is_explain'] = true; - } elseif ($statement instanceof InsertStatement) { - $flags['querytype'] = 'INSERT'; - $flags['is_affected'] = true; - $flags['is_insert'] = true; - } elseif ($statement instanceof ReplaceStatement) { - $flags['querytype'] = 'REPLACE'; - $flags['is_affected'] = true; - $flags['is_replace'] = true; - $flags['is_insert'] = true; - } elseif ($statement instanceof SelectStatement) { - $flags['querytype'] = 'SELECT'; - $flags['is_select'] = true; - - if (!empty($statement->from)) { - $flags['select_from'] = true; - } - - if ($statement->options->has('DISTINCT')) { - $flags['distinct'] = true; - } - - if ((!empty($statement->group)) || (!empty($statement->having))) { - $flags['is_group'] = true; - } - - if ((!empty($statement->into)) - && ($statement->into->type === 'OUTFILE') - ) { - $flags['is_export'] = true; - } - - $expressions = $statement->expr; - if (!empty($statement->join)) { - foreach ($statement->join as $join) { - $expressions[] = $join->expr; - } - } - - foreach ($expressions as $expr) { - if (!empty($expr->function)) { - if ($expr->function === 'COUNT') { - $flags['is_count'] = true; - } elseif (in_array($expr->function, static::$FUNCTIONS)) { - $flags['is_func'] = true; - } - } - if (!empty($expr->subquery)) { - $flags['is_subquery'] = true; - } - } - - if ((!empty($statement->procedure)) - && ($statement->procedure->name === 'ANALYSE') - ) { - $flags['is_analyse'] = true; - } - - if (!empty($statement->group)) { - $flags['group'] = true; - } - - if (!empty($statement->having)) { - $flags['having'] = true; - } - - if (!empty($statement->union)) { - $flags['union'] = true; - } - - if (!empty($statement->join)) { - $flags['join'] = true; - } - - } elseif ($statement instanceof ShowStatement) { - $flags['querytype'] = 'SHOW'; - $flags['is_show'] = true; - } elseif ($statement instanceof UpdateStatement) { - $flags['querytype'] = 'UPDATE'; - $flags['is_affected'] = true; - } - - if (($statement instanceof SelectStatement) - || ($statement instanceof UpdateStatement) - || ($statement instanceof DeleteStatement) - ) { - if (!empty($statement->limit)) { - $flags['limit'] = true; - } - if (!empty($statement->order)) { - $flags['order'] = true; - } - } - - return $flags; - } - - /** - * Parses a query and gets all information about it. - * - * @param string $query The query to be parsed. - * - * @return array The array returned is the one returned by - * `static::getFlags()`, with the following keys added: - * - parser - the parser used to analyze the query; - * - statement - the first statement resulted from parsing; - * - select_tables - the real name of the tables selected; - * if there are no table names in the `SELECT` - * expressions, the table names are fetched from the - * `FROM` expressions - * - select_expr - selected expressions - */ - public static function getAll($query) - { - $parser = new Parser($query); - - if (empty($parser->statements[0])) { - return array(); - } - - $statement = $parser->statements[0]; - - $ret = static::getFlags($statement, true); - - $ret['parser'] = $parser; - $ret['statement'] = $statement; - - if ($statement instanceof SelectStatement) { - $ret['select_tables'] = array(); - $ret['select_expr'] = array(); - - // Finding tables' aliases and their associated real names. - $tableAliases = array(); - foreach ($statement->from as $expr) { - if ((isset($expr->table)) && ($expr->table !== '') - && (isset($expr->alias)) && ($expr->alias !== '') - ) { - $tableAliases[$expr->alias] = array( - $expr->table, - isset($expr->database) ? $expr->database : null - ); - } - } - - // Trying to find selected tables only from the select expression. - // Sometimes, this is not possible because the tables aren't defined - // explicitly (e.g. SELECT * FROM film, SELECT film_id FROM film). - foreach ($statement->expr as $expr) { - if ((isset($expr->table)) && ($expr->table !== '')) { - if (isset($tableAliases[$expr->table])) { - $arr = $tableAliases[$expr->table]; - } else { - $arr = array( - $expr->table, - ((isset($expr->database)) && ($expr->database !== '')) ? - $expr->database : null - ); - } - if (!in_array($arr, $ret['select_tables'])) { - $ret['select_tables'][] = $arr; - } - } else { - $ret['select_expr'][] = $expr->expr; - } - } - - // If no tables names were found in the SELECT clause or if there - // are expressions like * or COUNT(*), etc. tables names should be - // extracted from the FROM clause. - if (empty($ret['select_tables'])) { - foreach ($statement->from as $expr) { - if ((isset($expr->table)) && ($expr->table !== '')) { - $arr = array( - $expr->table, - ((isset($expr->database)) && ($expr->database !== '')) ? - $expr->database : null - ); - if (!in_array($arr, $ret['select_tables'])) { - $ret['select_tables'][] = $arr; - } - } - } - } - } - - return $ret; - } - - /** - * Gets a list of all tables used in this statement. - * - * @param Statement $statement Statement to be scanned. - * - * @return array - */ - public static function getTables($statement) - { - $expressions = array(); - - if (($statement instanceof InsertStatement) - || ($statement instanceof ReplaceStatement) - ) { - $expressions = array($statement->into->dest); - } elseif ($statement instanceof UpdateStatement) { - $expressions = $statement->tables; - } elseif (($statement instanceof SelectStatement) - || ($statement instanceof DeleteStatement) - ) { - $expressions = $statement->from; - } elseif (($statement instanceof AlterStatement) - || ($statement instanceof TruncateStatement) - ) { - $expressions = array($statement->table); - } elseif ($statement instanceof DropStatement) { - if (!$statement->options->has('TABLE')) { - // No tables are dropped. - return array(); - } - $expressions = $statement->fields; - } elseif ($statement instanceof RenameStatement) { - foreach ($statement->renames as $rename) { - $expressions[] = $rename->old; - } - } - - $ret = array(); - foreach ($expressions as $expr) { - if (!empty($expr->table)) { - $expr->expr = null; // Force rebuild. - $expr->alias = null; // Aliases are not required. - $ret[] = Expression::build($expr); - } - } - return $ret; - } - - /** - * Gets a specific clause. - * - * @param Statement $statement The parsed query that has to be modified. - * @param TokensList $list The list of tokens. - * @param string $clause The clause to be returned. - * @param int|string $type The type of the search. - * If int, - * -1 for everything that was before - * 0 only for the clause - * 1 for everything after - * If string, the name of the first clause that - * should not be included. - * @param bool $skipFirst Whether to skip the first keyword in clause. - * - * @return string - */ - public static function getClause($statement, $list, $clause, $type = 0, $skipFirst = true) - { - - /** - * The index of the current clause. - * - * @var int $currIdx - */ - $currIdx = 0; - - /** - * The count of brackets. - * We keep track of them so we won't insert the clause in a subquery. - * - * @var int $brackets - */ - $brackets = 0; - - /** - * The string to be returned. - * - * @var string $ret - */ - $ret = ''; - - /** - * The clauses of this type of statement and their index. - * - * @var array $clauses - */ - $clauses = array_flip(array_keys($statement->getClauses())); - - /** - * Lexer used for lexing the clause. - * - * @var Lexer $lexer - */ - $lexer = new Lexer($clause); - - /** - * The type of this clause. - * - * @var string $clauseType - */ - $clauseType = $lexer->list->getNextOfType(Token::TYPE_KEYWORD)->value; - - /** - * The index of this clause. - * - * @var int $clauseIdx - */ - $clauseIdx = $clauses[$clauseType]; - - $firstClauseIdx = $clauseIdx; - $lastClauseIdx = $clauseIdx + 1; - - // Determining the behavior of this function. - if ($type === -1) { - $firstClauseIdx = -1; // Something small enough. - $lastClauseIdx = $clauseIdx - 1; - } elseif ($type === 1) { - $firstClauseIdx = $clauseIdx + 1; - $lastClauseIdx = 10000; // Something big enough. - } elseif (is_string($type)) { - if ($clauses[$type] > $clauseIdx) { - $firstClauseIdx = $clauseIdx + 1; - $lastClauseIdx = $clauses[$type] - 1; - } else { - $firstClauseIdx = $clauses[$type] + 1; - $lastClauseIdx = $clauseIdx - 1; - } - } - - // This option is unavailable for multiple clauses. - if ($type !== 0) { - $skipFirst = false; - } - - for ($i = $statement->first; $i <= $statement->last; ++$i) { - $token = $list->tokens[$i]; - - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - if ($token->type === Token::TYPE_OPERATOR) { - if ($token->value === '(') { - ++$brackets; - } elseif ($token->value === ')') { - --$brackets; - } - } - - if ($brackets == 0) { - // Checking if the section was changed. - if (($token->type === Token::TYPE_KEYWORD) - && (isset($clauses[$token->value])) - && ($clauses[$token->value] >= $currIdx) - ) { - $currIdx = $clauses[$token->value]; - if (($skipFirst) && ($currIdx == $clauseIdx)) { - // This token is skipped (not added to the old - // clause) because it will be replaced. - continue; - } - } - } - - if (($firstClauseIdx <= $currIdx) && ($currIdx <= $lastClauseIdx)) { - $ret .= $token->token; - } - } - - return trim($ret); - } - - /** - * Builds a query by rebuilding the statement from the tokens list supplied - * and replaces a clause. - * - * It is a very basic version of a query builder. - * - * @param Statement $statement The parsed query that has to be modified. - * @param TokensList $list The list of tokens. - * @param string $old The type of the clause that should be - * replaced. This can be an entire clause. - * @param string $new The new clause. If this parameter is omitted - * it is considered to be equal with `$old`. - * @param bool $onlyType Whether only the type of the clause should - * be replaced or the entire clause. - * - * @return string - */ - public static function replaceClause($statement, $list, $old, $new = null, $onlyType = false) - { - // TODO: Update the tokens list and the statement. - - if ($new === null) { - $new = $old; - } - - if ($onlyType) { - return static::getClause($statement, $list, $old, -1, false) . ' ' . - $new . ' ' . static::getClause($statement, $list, $old, 0) . ' ' . - static::getClause($statement, $list, $old, 1, false); - } - - return static::getClause($statement, $list, $old, -1, false) . ' ' . - $new . ' ' . static::getClause($statement, $list, $old, 1, false); - } - - /** - * Builds a query by rebuilding the statement from the tokens list supplied - * and replaces multiple clauses. - * - * @param Statement $statement The parsed query that has to be modified. - * @param TokensList $list The list of tokens. - * @param array $ops Clauses to be replaced. Contains multiple - * arrays having two values: array($old, $new). - * Clauses must be sorted. - * - * @return string - */ - public static function replaceClauses($statement, $list, array $ops) - { - $count = count($ops); - - // Nothing to do. - if ($count === 0) { - return ''; - } - - /** - * Value to be returned. - * - * @var string $ret - */ - $ret = ''; - - // If there is only one clause, `replaceClause()` should be used. - if ($count === 1) { - return static::replaceClause( - $statement, - $list, - $ops[0][0], - $ops[0][1] - ); - } - - // Adding everything before first replacement. - $ret .= static::getClause($statement, $list, $ops[0][0], -1) . ' '; - - // Doing replacements. - for ($i = 0; $i < $count; ++$i) { - $ret .= $ops[$i][1] . ' '; - - // Adding everything between this and next replacement. - if ($i + 1 !== $count) { - $ret .= static::getClause($statement, $list, $ops[$i][0], $ops[$i + 1][0]) . ' '; - } - } - - // Adding everything after the last replacement. - $ret .= static::getClause($statement, $list, $ops[$count - 1][0], 1); - - return $ret; - } - - /** - * Gets the first full statement in the query. - * - * @param string $query The query to be analyzed. - * @param string $delimiter The delimiter to be used. - * - * @return array Array containing the first full query, the - * remaining part of the query and the last - * delimiter. - */ - public static function getFirstStatement($query, $delimiter = null) - { - $lexer = new Lexer($query, false, $delimiter); - $list = $lexer->list; - - /** - * Whether a full statement was found. - * - * @var bool $fullStatement - */ - $fullStatement = false; - - /** - * The first full statement. - * - * @var string $statement - */ - $statement = ''; - - for ($list->idx = 0; $list->idx < $list->count; ++$list->idx) { - $token = $list->tokens[$list->idx]; - - if ($token->type === Token::TYPE_COMMENT) { - continue; - } - - $statement .= $token->token; - - if (($token->type === Token::TYPE_DELIMITER) && (!empty($token->token))) { - $delimiter = $token->token; - $fullStatement = true; - break; - } - } - - // No statement was found so we return the entire query as being the - // remaining part. - if (!$fullStatement) { - return array(null, $query, $delimiter); - } - - // At least one query was found so we have to build the rest of the - // remaining query. - $query = ''; - for (++$list->idx; $list->idx < $list->count; ++$list->idx) { - $query .= $list->tokens[$list->idx]->token; - } - - return array(trim($statement), $query, $delimiter); - } -} diff --git a/libraries/sql-parser/src/Utils/Routine.php b/libraries/sql-parser/src/Utils/Routine.php deleted file mode 100644 index 5450cac178..0000000000 --- a/libraries/sql-parser/src/Utils/Routine.php +++ /dev/null @@ -1,136 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Routine -{ - - /** - * Parses a parameter of a routine. - * - * @param string $param Parameter's definition. - * - * @return array - */ - public static function getReturnType($param) - { - $lexer = new Lexer($param); - - // A dummy parser is used for error reporting. - $type = DataType::parse(new Parser(), $lexer->list); - - if ($type === null) { - return array('', '', '', '', ''); - } - - $options = array(); - foreach ($type->options->options as $opt) { - $options[] = is_string($opt) ? $opt : $opt['value']; - } - - return array( - '', - '', - $type->name, - implode(',', $type->parameters), - implode(' ', $options) - ); - } - - /** - * Parses a parameter of a routine. - * - * @param string $param Parameter's definition. - * - * @return array - */ - public static function getParameter($param) - { - $lexer = new Lexer('(' . $param . ')'); - - // A dummy parser is used for error reporting. - $param = ParameterDefinition::parse(new Parser(), $lexer->list); - - if (empty($param[0])) { - return array('', '', '', '', ''); - } - - $param = $param[0]; - - $options = array(); - foreach ($param->type->options->options as $opt) { - $options[] = is_string($opt) ? $opt : $opt['value']; - } - - return array( - empty($param->inOut) ? '' : $param->inOut, - $param->name, - $param->type->name, - implode(',', $param->type->parameters), - implode(' ', $options) - ); - } - - /** - * Gets the parameters of a routine from the parse tree. - * - * @param CreateStatement $statement The statement to be processed. - * - * @return array - */ - public static function getParameters($statement) - { - $retval = array( - 'num' => 0, - 'dir' => array(), - 'name' => array(), - 'type' => array(), - 'length' => array(), - 'length_arr' => array(), - 'opts' => array(), - ); - - if (!empty($statement->parameters)) { - $idx = 0; - foreach ($statement->parameters as $param) { - $retval['dir'][$idx] = $param->inOut; - $retval['name'][$idx] = $param->name; - $retval['type'][$idx] = $param->type->name; - $retval['length'][$idx] = implode(',', $param->type->parameters); - $retval['length_arr'][$idx] = $param->type->parameters; - $retval['opts'][$idx] = array(); - foreach ($param->type->options->options as $opt) { - $retval['opts'][$idx][] = is_string($opt) ? - $opt : $opt['value']; - } - $retval['opts'][$idx] = implode(' ', $retval['opts'][$idx]); - ++$idx; - } - - $retval['num'] = $idx; - } - - return $retval; - } -} diff --git a/libraries/sql-parser/src/Utils/Table.php b/libraries/sql-parser/src/Utils/Table.php deleted file mode 100644 index b88f2345d1..0000000000 --- a/libraries/sql-parser/src/Utils/Table.php +++ /dev/null @@ -1,142 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Table -{ - - /** - * Gets the foreign keys of the table. - * - * @param CreateStatement $statement The statement to be processed. - * - * @return array - */ - public static function getForeignKeys($statement) - { - if ((empty($statement->fields)) - || (!is_array($statement->fields)) - || (!$statement->options->has('TABLE')) - ) { - return array(); - } - - $ret = array(); - - foreach ($statement->fields as $field) { - if ((empty($field->key)) || ($field->key->type !== 'FOREIGN KEY')) { - continue; - } - - $columns = array(); - foreach ($field->key->columns as $column) { - $columns[] = $column['name']; - } - - $tmp = array( - 'constraint' => $field->name, - 'index_list' => $columns, - ); - - if (!empty($field->references)) { - $tmp['ref_db_name'] = $field->references->table->database; - $tmp['ref_table_name'] = $field->references->table->table; - $tmp['ref_index_list'] = $field->references->columns; - - if (($opt = $field->references->options->has('ON UPDATE'))) { - $tmp['on_update'] = str_replace(' ', '_', $opt); - } - - if (($opt = $field->references->options->has('ON DELETE'))) { - $tmp['on_delete'] = str_replace(' ', '_', $opt); - } - - // if (($opt = $field->references->options->has('MATCH'))) { - // $tmp['match'] = str_replace(' ', '_', $opt); - // } - } - - $ret[] = $tmp; - - } - - return $ret; - } - - /** - * Gets fields of the table. - * - * @param CreateStatement $statement The statement to be processed. - * - * @return array - */ - public static function getFields($statement) - { - if ((empty($statement->fields)) - || (!is_array($statement->fields)) - || (!$statement->options->has('TABLE')) - ) { - return array(); - } - - $ret = array(); - - foreach ($statement->fields as $field) { - // Skipping keys. - if (empty($field->type)) { - continue; - } - - $ret[$field->name] = array( - 'type' => $field->type->name, - 'timestamp_not_null' => false, - ); - - if ($field->options) { - if ($field->type->name === 'TIMESTAMP') { - if ($field->options->has('NOT NULL')) { - $ret[$field->name]['timestamp_not_null'] = true; - } - } - - if (($option = $field->options->has('DEFAULT'))) { - $ret[$field->name]['default_value'] = $option; - if ($option === 'CURRENT_TIMESTAMP') { - $ret[$field->name]['default_current_timestamp'] = true; - } - } - - if (($option = $field->options->has('ON UPDATE'))) { - if ($option === 'CURRENT_TIMESTAMP') { - $ret[$field->name]['on_update_current_timestamp'] = true; - } - } - - if (($option = $field->options->has('AS'))) { - $ret[$field->name]['generated'] = true; - $ret[$field->name]['expr'] = $option; - } - } - - } - - return $ret; - } -} diff --git a/libraries/sql-parser/src/Utils/Tokens.php b/libraries/sql-parser/src/Utils/Tokens.php deleted file mode 100644 index eb76df2a73..0000000000 --- a/libraries/sql-parser/src/Utils/Tokens.php +++ /dev/null @@ -1,175 +0,0 @@ - - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -class Tokens -{ - - /** - * Checks if a pattern is a match for the specified token. - * - * @param Token $token The token to be matched. - * @param array $pattern The pattern to be matches. - * - * @return bool - */ - public static function match(Token $token, array $pattern) - { - // Token. - if ((isset($pattern['token'])) - && ($pattern['token'] !== $token->token) - ) { - return false; - } - - // Value. - if ((isset($pattern['value'])) - && ($pattern['value'] !== $token->value) - ) { - return false; - } - - if ((isset($pattern['value_str'])) - && (strcasecmp($pattern['value_str'], $token->value)) - ) { - return false; - } - - // Type. - if ((isset($pattern['type'])) - && ($pattern['type'] !== $token->type) - ) { - return false; - } - - // Flags. - if ((isset($pattern['flags'])) - && (($pattern['flags'] & $token->flags) === 0) - ) { - return false; - } - - return true; - } - - public static function replaceTokens($list, array $find, array $replace) - { - - /** - * Whether the first parameter is a list. - * - * @var bool - */ - $isList = $list instanceof TokensList; - - // Parsing the tokens. - if (!$isList) { - $list = Lexer::getTokens($list); - } - - /** - * The list to be returned. - * - * @var array - */ - $newList = array(); - - /** - * The length of the find pattern is calculated only once. - * - * @var int - */ - $findCount = count($find); - - /** - * The starting index of the pattern. - * - * @var int - */ - $i = 0; - - while ($i < $list->count) { - // A sequence may not start with a comment. - if ($list->tokens[$i]->type === Token::TYPE_COMMENT) { - $newList[] = $list->tokens[$i]; - ++$i; - continue; - } - - /** - * The index used to parse `$list->tokens`. - * - * This index might be running faster than `$k` because some tokens - * are skipped. - * - * @var int - */ - $j = $i; - - /** - * The index used to parse `$find`. - * - * This index might be running slower than `$j` because some tokens - * are skipped. - * - * @var int - */ - $k = 0; - - // Checking if the next tokens match the pattern described. - while (($j < $list->count) && ($k < $findCount)) { - // Comments are being skipped. - if ($list->tokens[$j]->type === Token::TYPE_COMMENT) { - ++$j; - } - - if (!static::match($list->tokens[$j], $find[$k])) { - // This token does not match the pattern. - break; - } - - // Going to next token and segment of find pattern. - ++$j; - ++$k; - } - - - // Checking if the sequence was found. - if ($k === $findCount) { - // Inserting new tokens. - foreach ($replace as $token) { - $newList[] = $token; - } - - // Skipping next `$findCount` tokens. - $i = $j; - } else { - // Adding the same token. - $newList[] = $list->tokens[$i]; - ++$i; - } - } - - return $isList ? - new TokensList($newList) : TokensList::build($newList); - } -} diff --git a/libraries/sql-parser/src/common.php b/libraries/sql-parser/src/common.php deleted file mode 100644 index 3575c24a7f..0000000000 --- a/libraries/sql-parser/src/common.php +++ /dev/null @@ -1,21 +0,0 @@ - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser 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 -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. - -********************************************************************** -********************************************************************** - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - 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. - - - Copyright (C) - - 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 . - -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: - - Copyright (C) - 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 -. - - 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 -. - -********************************************************************** -********************************************************************** diff --git a/libraries/tcpdf/README.TXT b/libraries/tcpdf/README.TXT deleted file mode 100644 index b3a4a8bc5d..0000000000 --- a/libraries/tcpdf/README.TXT +++ /dev/null @@ -1,115 +0,0 @@ -TCPDF - README -============================================================ - -I WISH TO IMPROVE AND EXPAND TCPDF BUT I NEED YOUR SUPPORT. -PLEASE MAKE A DONATION: -http://sourceforge.net/donate/index.php?group_id=128076 - ------------------------------------------------------------- - -Name: TCPDF -Version: 6.2.9 -Release date: 2015-06-18 -Author: Nicola Asuni - -Copyright (c) 2002-2015: - Nicola Asuni - Tecnick.com LTD - www.tecnick.com - -URLs: - http://www.tcpdf.org - http://www.sourceforge.net/projects/tcpdf - -Description: - TCPDF is a PHP class for generating PDF files on-the-fly without requiring external extensions. - This library includes also a class to extract data from existing PDF documents and - classes to generate 1D and 2D barcodes in various formats. - -Main Features: - * no external libraries are required for the basic functions; - * all standard page formats, custom page formats, custom margins and units of measure; - * UTF-8 Unicode and Right-To-Left languages; - * TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1 and CID-0 fonts; - * font subsetting; - * methods to publish some XHTML + CSS code, Javascript and Forms; - * images, graphic (geometric figures) and transformation methods; - * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/script/formats.php) - * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417; - * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies; - * automatic page header and footer management; - * document encryption up to 256 bit and digital signature certifications; - * transactions to UNDO commands; - * PDF annotations, including links, text and file attachments; - * text rendering modes (fill, stroke and clipping); - * multiple columns mode; - * no-write page regions; - * bookmarks, named destinations and table of content; - * text hyphenation; - * text stretching and spacing (tracking); - * automatic page break, line break and text alignments including justification; - * automatic page numbering and page groups; - * move and delete pages; - * page compression (requires php-zlib extension); - * XOBject Templates; - * Layers and object visibility. - * PDF/A-1b support. - -Installation (full instructions on http: www.tcpdf.org): - 1. copy the folder on your Web server - 2. set your installation path and other parameters on the config/tcpdf_config.php - 3. call the examples/example_001.php page with your browser to see an example - -Source Code Documentation: - http://www.tcpdf.org - -Additional Documentation: - http://www.tcpdf.org - -License: - Copyright (C) 2002-2014 Nicola Asuni - Tecnick.com LTD - - TCPDF is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - TCPDF 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 Lesser General Public License for more details. - - You should have received a copy of the License - along with TCPDF. If not, see - . - - See LICENSE.TXT file for more information. - -Third party fonts: - - This library may include third party font files released with different licenses. - - All the PHP files on the fonts directory are subject to the general TCPDF license (GNU-LGPLv3), - they do not contain any binary data but just a description of the general properties of a particular font. - These files can be also generated on the fly using the font utilities and TCPDF methods. - - All the original binary TTF font files have been renamed for compatibility with TCPDF and compressed using the gzcompress PHP function that uses the ZLIB data format (.z files). - - The binary files (.z) that begins with the prefix "free" have been extracted from the GNU FreeFont collection (GNU-GPLv3). - The binary files (.z) that begins with the prefix "pdfa" have been derived from the GNU FreeFont, so they are subject to the same license. - For the details of Copyright, License and other information, please check the files inside the directory fonts/freefont-20120503 - Link : http://www.gnu.org/software/freefont/ - - The binary files (.z) that begins with the prefix "dejavu" have been extracted from the DejaVu fonts 2.33 (Bitstream) collection. - For the details of Copyright, License and other information, please check the files inside the directory fonts/dejavu-fonts-ttf-2.33 - Link : http://dejavu-fonts.org - - The binary files (.z) that begins with the prefix "ae" have been extracted from the Arabeyes.org collection (GNU-GPLv2). - Link : http://projects.arabeyes.org/ - -ICC profile: - TCPDF includes the sRGB.icc profile from the icc-profiles-free Debian package: - https://packages.debian.org/source/stable/icc-profiles-free - - -============================================================ diff --git a/libraries/tcpdf/config/tcpdf_config.php b/libraries/tcpdf/config/tcpdf_config.php deleted file mode 100644 index 92317b121e..0000000000 --- a/libraries/tcpdf/config/tcpdf_config.php +++ /dev/null @@ -1,227 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -//============================================================+ - -/** - * Configuration file for TCPDF. - * @author Nicola Asuni - * @package com.tecnick.tcpdf - * @version 4.9.005 - * @since 2004-10-27 - */ - -// IMPORTANT: -// If you define the constant K_TCPDF_EXTERNAL_CONFIG, all the following settings will be ignored. -// If you use the tcpdf_autoconfig.php, then you can overwrite some values here. - - -/** - * Installation path (/var/www/tcpdf/). - * By default it is automatically calculated but you can also set it as a fixed string to improve performances. - */ -//define ('K_PATH_MAIN', ''); - -/** - * URL path to tcpdf installation folder (http://localhost/tcpdf/). - * By default it is automatically set but you can also set it as a fixed string to improve performances. - */ -//define ('K_PATH_URL', ''); - -/** - * Path for PDF fonts. - * By default it is automatically set but you can also set it as a fixed string to improve performances. - */ -//define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/'); - -/** - * Default images directory. - * By default it is automatically set but you can also set it as a fixed string to improve performances. - */ -//define ('K_PATH_IMAGES', ''); - -/** - * Deafult image logo used be the default Header() method. - * Please set here your own logo or an empty string to disable it. - */ -//define ('PDF_HEADER_LOGO', ''); - -/** - * Header logo image width in user units. - */ -//define ('PDF_HEADER_LOGO_WIDTH', 0); - -/** - * Cache directory for temporary files (full path). - */ -//define ('K_PATH_CACHE', '/tmp/'); - -/** - * Generic name for a blank image. - */ -define ('K_BLANK_IMAGE', '_blank.png'); - -/** - * Page format. - */ -define ('PDF_PAGE_FORMAT', 'A4'); - -/** - * Page orientation (P=portrait, L=landscape). - */ -define ('PDF_PAGE_ORIENTATION', 'P'); - -/** - * Document creator. - */ -define ('PDF_CREATOR', 'TCPDF'); - -/** - * Document author. - */ -define ('PDF_AUTHOR', 'TCPDF'); - -/** - * Header title. - */ -define ('PDF_HEADER_TITLE', 'TCPDF Example'); - -/** - * Header description string. - */ -define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org"); - -/** - * Document unit of measure [pt=point, mm=millimeter, cm=centimeter, in=inch]. - */ -define ('PDF_UNIT', 'mm'); - -/** - * Header margin. - */ -define ('PDF_MARGIN_HEADER', 5); - -/** - * Footer margin. - */ -define ('PDF_MARGIN_FOOTER', 10); - -/** - * Top margin. - */ -define ('PDF_MARGIN_TOP', 27); - -/** - * Bottom margin. - */ -define ('PDF_MARGIN_BOTTOM', 25); - -/** - * Left margin. - */ -define ('PDF_MARGIN_LEFT', 15); - -/** - * Right margin. - */ -define ('PDF_MARGIN_RIGHT', 15); - -/** - * Default main font name. - */ -define ('PDF_FONT_NAME_MAIN', 'helvetica'); - -/** - * Default main font size. - */ -define ('PDF_FONT_SIZE_MAIN', 10); - -/** - * Default data font name. - */ -define ('PDF_FONT_NAME_DATA', 'helvetica'); - -/** - * Default data font size. - */ -define ('PDF_FONT_SIZE_DATA', 8); - -/** - * Default monospaced font name. - */ -define ('PDF_FONT_MONOSPACED', 'courier'); - -/** - * Ratio used to adjust the conversion of pixels to user units. - */ -define ('PDF_IMAGE_SCALE_RATIO', 1.25); - -/** - * Magnification factor for titles. - */ -define('HEAD_MAGNIFICATION', 1.1); - -/** - * Height of cell respect font height. - */ -define('K_CELL_HEIGHT_RATIO', 1.25); - -/** - * Title magnification respect main font size. - */ -define('K_TITLE_MAGNIFICATION', 1.3); - -/** - * Reduction factor for small font. - */ -define('K_SMALL_RATIO', 2/3); - -/** - * Set to true to enable the special procedure used to avoid the overlappind of symbols on Thai language. - */ -define('K_THAI_TOPCHARS', true); - -/** - * If true allows to call TCPDF methods using HTML syntax - * IMPORTANT: For security reason, disable this feature if you are printing user HTML content. - */ -define('K_TCPDF_CALLS_IN_HTML', false); - -/** - * If true and PHP version is greater than 5, then the Error() method throw new exception instead of terminating the execution. - */ -define('K_TCPDF_THROW_EXCEPTION_ERROR', false); - -/** - * Default timezone for datetime functions - */ -define('K_TIMEZONE', 'UTC'); - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/libraries/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE b/libraries/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE deleted file mode 100644 index 254e2cc42a..0000000000 --- a/libraries/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE +++ /dev/null @@ -1,99 +0,0 @@ -Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. -Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below) - -Bitstream Vera Fonts Copyright ------------------------------- - -Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is -a trademark of Bitstream, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of the fonts accompanying this license ("Fonts") and associated -documentation files (the "Font Software"), to reproduce and distribute the -Font Software, including without limitation the rights to use, copy, merge, -publish, distribute, and/or sell copies of the Font Software, and to permit -persons to whom the Font Software is furnished to do so, subject to the -following conditions: - -The above copyright and trademark notices and this permission notice shall -be included in all copies of one or more of the Font Software typefaces. - -The Font Software may be modified, altered, or added to, and in particular -the designs of glyphs or characters in the Fonts may be modified and -additional glyphs or characters may be added to the Fonts, only if the fonts -are renamed to names not containing either the words "Bitstream" or the word -"Vera". - -This License becomes null and void to the extent applicable to Fonts or Font -Software that has been modified and is distributed under the "Bitstream -Vera" names. - -The Font Software may be sold as part of a larger software package but no -copy of one or more of the Font Software typefaces may be sold by itself. - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, -TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME -FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING -ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE -FONT SOFTWARE. - -Except as contained in this notice, the names of Gnome, the Gnome -Foundation, and Bitstream Inc., shall not be used in advertising or -otherwise to promote the sale, use or other dealings in this Font Software -without prior written authorization from the Gnome Foundation or Bitstream -Inc., respectively. For further information, contact: fonts at gnome dot -org. - -Arev Fonts Copyright ------------------------------- - -Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the fonts accompanying this license ("Fonts") and -associated documentation files (the "Font Software"), to reproduce -and distribute the modifications to the Bitstream Vera Font Software, -including without limitation the rights to use, copy, merge, publish, -distribute, and/or sell copies of the Font Software, and to permit -persons to whom the Font Software is furnished to do so, subject to -the following conditions: - -The above copyright and trademark notices and this permission notice -shall be included in all copies of one or more of the Font Software -typefaces. - -The Font Software may be modified, altered, or added to, and in -particular the designs of glyphs or characters in the Fonts may be -modified and additional glyphs or characters may be added to the -Fonts, only if the fonts are renamed to names not containing either -the words "Tavmjong Bah" or the word "Arev". - -This License becomes null and void to the extent applicable to Fonts -or Font Software that has been modified and is distributed under the -"Tavmjong Bah Arev" names. - -The Font Software may be sold as part of a larger software package but -no copy of one or more of the Font Software typefaces may be sold by -itself. - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL -TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. - -Except as contained in this notice, the name of Tavmjong Bah shall not -be used in advertising or otherwise to promote the sale, use or other -dealings in this Font Software without prior written authorization -from Tavmjong Bah. For further information, contact: tavmjong @ free -. fr. - -$Id: LICENSE 2133 2007-11-28 02:46:28Z lechimp $ diff --git a/libraries/tcpdf/fonts/dejavusans.ctg.z b/libraries/tcpdf/fonts/dejavusans.ctg.z deleted file mode 100644 index df25b6497f084274a55feb158bb478f237137568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10454 zcmc(^S5y;P^zI8%B7G|$9aNeMNGC$*C5UvD-lPadYCu|OTei{>0i`9B2#89JQluvv zL6T4<1_*5{0TLiUq?f?q{O^6cFZb!3HP%?~>ziZEHNW2%gP_f_HLu_3V0wC0=EV!9 z+{KOm?`rg4=wZM%c7}GG_d7TL)SF!(ucY4lbiZcrlMd5KrpDjTdASY$=D5-HH;-@_ z6X3$#|1R(yTxI%Y81omiDQm8w-(PH|Y~zN{{$lyYiZTrP3-FDNZW#ZXNrpAu(C0O) z3>(%k{Pl$@){llyU$a-SQ4L|Qnf+Lc4gFuU`LRtKM!jYsv$h+Cyatfj4h<9Sm;_i~ z8hYEY3b6GXLhUZRVXZcV*s;H1TQZEbV}8i`*6^_%+e5aWhLLtG1lE?*p8%=*Vg%+$ zBRxAQ4JIBV=`mpqW@{t$G4W<5B_o9~(PrjgBhZ-SGbRZm`7x1a%pOL-F^L@}JtO5Y zu^r|FBZDz1ZYCDYRTW`wW)qBxig*^2H0FkiXcn_C=8lS_6%#*3Mn%Mm`2j{lMPi6a z9iylsHpCo((N&RBWa7eHZxU8yw#2A4iPteHU~V;u)-eZSbebfCn8Yx0O(H?eZWyg5 ziFGCr=5~|VI&&OGze!4*34pm4CM?cuj!_L0M=;4_Zia~>m;*4{VUq4lLKxXF5qD-M zjAod`EE5o;6ec#y9F5TnlhS44!$@xl>oVJ7)VIXDn3ORJTcTaep%~DXWIU4;Mt(~q zp4kfn+>$u?o5?t>f?bt>WaiMg_VP;ewSRcYc7_}t6eB5i6>)ApX>^*(^oR4C z^7^8SRIX(4ETX@vNM`ZzqhF|8vf|E1SDoLR_W}Biil7zG1iD#8!irBFou$G*#Qg&l%BBR?zKXk_bK_^vkeI?%ajw>T{iWozQQ?1l@Ti(Jf&T?tDOW zb{PLGcN@C?Ty@@PbZMB-EYCi=J4|Ypj}QIN)?d2ZIq1ss8t~ep^S1F6 znF?^2f$i-c3h>qLqn#*pq<%64hOJxW!F!I5?z5BYwY^VpdXE^30U?H&-gHO-am zED4+~;9xs90&k1Cgq=BoBNFUk=S1L%G}p7UC2;M66YRVQe7oi>V}=?RdB7%Pb{gC~ z=F($#H8``uzGKcByxHdbW2PD$*5C(Y4>fqK&DF=OG`NPr5o7Kee8c8kW5&%FmB5y# z&)keH$JLrodPDC&>9;+8d$zsz(h>Rd36Eg_Nd+9Dc$@%4kK>o&ZScQOLO` ze5A}hB!j}Flg5keqg>R?JaUN;4ry=Eb@fy#FYr>R5F~IyUbb9!wXZL7bXP#W zCESBlx2U=rrK z2ld57_dsL|!4*>9qUGvVUrO{`tB54%KuTL~yE@gwi5_dnT>=c!-J3@*{~fFp+q{*W&%+9dbj zGA%E+3MIl7NM?&H>3(o=tGgSrp5O?nZP6sT2A8&a&Qt^wv>@;nC6Z$>ywzg{Nh3r- zI$QKep26j}Q~ zBqtht&*S(xbBeGxk8hnX3xAMLhEkAkio_5KeYtb0PoFpJj<}>b`Vv$|T*Mq>57iKt z_>NYEDvFDJ$3UUF;!^Tx4(N4+usp^Bs)i7+LEnVlLWtI2AW$8IWB^(ODu)mWz_>uQ z5E3hBZRl-;*a{{Vs*jKoLbE}yxeE(n%%H07;)Q5g=uLOgLd;{Rw!5SgS`aGhF5-l7 zfNHu+OrkZRO73Elm`JFeyA%-31C^c?24bwC>a*f)XeFq^tY{l17z&z|j7Cd9mtb1{7Lnft#O2Tb~De82h*F6w9G{8~I<)lawmHF3bL zpE>$#``|)Pn({CF0cTG}mYc{O(f`z^-+KAUWA$IJ>uqmSYk|D4*NRV5L7DPFswN70N_X6`3fP1Ku^Vkt)46BQ|sr`XlS|2cDVG!gz0 z#xuH=jlLN00(f2cQubYM^Xp>vSs#+f(vAXV_Wye?oykd)q`H&GMBj<28qXAY?>d9m z$F$ZPRl&0cnHd4!fR}|iOj=CAKGNyAguDJS!22&qH?tptSI6|NKUDE#S_f3|1*;2- zWLts#r89GX4*L56!-ci8-N7N!wiIVi>GE6y#n!*=$8PuuXl1-uH8ZI$vY)--{YK-S zNOj+_y^^=Ef8*s%PVDq5dK1dCPHkB>YFeWs!#TADQi7OJcrAEt!tsK7+Kv*y84 zm79&rn*lpOc43xmqk%`hX{rQae{LXHSUTH&;E8XRDp5Ef3n(YdpKUSV=bNGWv&i2H z=r63E?J^ML`$~1PC}0S9MVKqwY{17i9Yt{VR|Gl=D`Y$L?ib%b*YLEr-#NHWl_>-(V_I~5e9+A2DeMH}GttwG_Zg4b2|M31u=1I&vR(7`)F;vD@Fny*B@XY&tO zEWUw~?)V}!M?_Y#xdzM@^PtmTecUx0L?*Mv2CNqgpfg{6XL+*Q17?Ae!hG501HOyt zbV7{3F3?k0IooLI+Mm4wKPMH@u#AS4J(}_+8!;8J%<^pFC$7t#p&$c`-8j7KWGe zOl4FpjPvsRWV9`e?&m#}(X=r6k@rkS4{NBFXC2^5SI- zZW?mt8CR*?G|tHLsk(F1=w9CaDvg^axV-Qx-H(R1^6piseKh`*_q0mqqtVkm*D9@# zCaZa{Dt(BdXdXC8=eSB0VqB8vU!@H(a?NwB(uA0h@}jErsD?UuHdX3W zUgmyP2rC<2?0(G&s~KK8dvU4PA|!W)%-e3ck$X&Lj=d|H`<=`Yd#@~ah0GQ!k`Zg> znGYl@#hTCO^O2p--`3)@{D_mXAw_>;QeaPzf0TM^ z@x;*MWv%U^*kP|j-WSCSijS^na23BCzV2`TrO0Jg(YrvyvbcI!&EMq%n`f$0dw^!*_vzB9>vJ z* zSWMRwPc>z@(@^cQ=5|MHUl(LvEfgL-)VZv;-E)YJf1#KN$@>n0>pq+&RfAky{c2h zi!`CC=pbHINKQqG?_y{tBs;g6eyMl{) zy`$(h(vqsyfoP~upx){zX+Q>2bvnvID#WOA9mOF?H>y@g=|%;Jdb22izOWu6s6R9RTDC(?Wg4N9YcS;myqDI`~5| zh+5!%3E%wTG2`a^XC;5_D{U`i`$!E-EnM)g3hxE+ z8NvOi->&q!1IG*J-e>S$kSr?C6zl1 z`{T$~`_2LTDaZl!$@OR5sv}SBdk6fd;Gd{f*WJ1!??W+Xo_esOZ*BUy$MV-~b9Gj# zcXSM_&HhPz8qm_F<1A5c;}}qz`Sa(he`FiXS+CyHF|;=4=j3X@ZX3HZOT7{CQDEA+ zA@k>H13OFC+Y_GzW@!>d1G3xXocZf5h<<_ho-}+sZy6n$eI=0L&;D)^b?rpmz@8Sg z>l3BVS5jXoqY7N{bxTCf!0Hy9Yj8b^=(<+7OJoo9opJ@b!0VNWj)CwNJp##_)*R*1 zS+7U*3@mS1(0L@$%WC)RbNJVE893%4H$HFHgS_xgR#oHC>NL_s@W zc>K8ixUdyJ^_UhO72BEYG2YfFS}O()8p3CGpxjYx*tHp!Fn z*Rgv7aZf))m*~xvd5<;+On;$ipIg^5y#>!l%FRO4nKaqG`*FqHv!33K%}&#`G|fHN zxYF+V`A4D6z-c&5Y0ohZ-aR+(z1bW+-AU8i^NcI+UeJFe)yy}YN|WBRKQ2m`)%PxM zwwilE42iT{DxQDngns-cDyx$wBpsC7jE9vhCDRpi6t z|DaCJf$bnC>fgGH3b+i^?>bfm>^;6NYgia+ zzK(AVe}p zQPV-ZaQrgr@SGtJUP1K-ak$|MP)k86t)7C>r6SAZx^X8}*v@iGLx~=5SX~ zFrw84RMS0yp;DfO>wr8E4K~1<&WS!MbtfDKN|1DP8RPs&b~dJ zLmZA=2>3NxZ{|JI-+Q@@-01Io6j1+oBs}2dmme-mby37Sfu)fnuz-KQj8Bt;qFV2` zl?IPQ1*Cr2_Hy679k3soHOqf1uJ7sbX^Zxm$VlP}dedOdHbUwduXbvw^oadRQN*nF zFT^t&hJE1S!k{({0Ugm?<4T-v{~qe&OYLJgk=S} zJs7*L3oX+bMXZc)tyFL0VrgB_d7Vwf{s>^DavOWN9uMu&SwL)#@bTUurv-{fl!_t3 z@*jji;p!V$2HmAJ7T9Jhu1=`i?Hk=%6}%NSA9A_l3T$3mC;l&}Vh|M)BM9lk?nT zkc<9r*F|MqCjEC8t1{M-{-cXq8IPy`>AKK3s6fYcaW>*=>8oArjo3gssf)J}zeYbg z4@w5b=mT9Gp*T2wxr;3n>qaMb@r2@M=zCo(n}Z8u9Lpe1=z&K(dWDPHu1;w z)AM9y5J1PoUzEb7(tpLXN@30EVngXO zC%nD*P5SW(bJCy`{rd?=60V%Sa>AB`^`cLn@Fd|E==&!uXM+ax(G#vSTrYj|B$ep` zr;Nt)m$$i%Uflf9^g^j9j8(|^?k`T;gX@3&GL5-pWGawr>UYV^RB+t%*(H;20w~j< zOXlAM>8A0yhB5-_rarl*GJ;ss@Lc06fsdw7bHP=DR8v^4k)J@Zsei7SpWw70^7dhk`#% zBkfHH0xhP&_T~h^UDJedLk)p!Q{Qn@4Z&g4?K2o7?aI6AC$g@YTJP$g$dfX8-&Im% zbTV(htEI?wWJluOCHt5Cs-)~b*^H86zqN{Ql7CxVguD{QK_;eIq^UrYcX)Tgo&WQEtalU#b!^{Wee7zv! zu}{16HOCZi!{yq3QIumH|5`sg%0B2ay#ETyA&7sbpBMFD{c>l&B+6->|G1wSYA1d< zwf_?Ip*a8deh%n;#O0d)V!N_2c}J)XLP+SF?U`lrSAkoF{en;jcmBzK9;kZVe!*9z zjkM0+WnYyg(^7xu#weDh)%-4wx$T)&`1@^)(tKLm@6s4${j{9l`3H(UX^p?(2e%XN zUPYST&v#z^@!GT`@17+o&%!+XX4RX9ohs#|qlZ`fuv==$SvRDygK8OBw<@s|wUn%z zzSt?XS6K>+*aNlaRyX*u-_+8rL`8G0hY;igbjP|>7 zXd8cQ=6`Ia*Ew`80_U#QHnbh#xS3mp6$T&x`nHT|qzEQtk?ejYBi#6liFlj*x!1=fBKrmeIJmHaHH@3j^L z`?*cqv=&PEnNM3p6?phLOiOADTkaJk_<2p+?iI3-4Ylv`7MPIjw5@mxrO9`- z@4YJUB|B@|yei};n`&Fw6g(h5)V8)MR3}?$TaFY&klnRyM+&*f#_e}+7g&<-w_DvV zR3P7Lzt>O@NOod$!wd6avUb=lG$(oNOO! zC0Qs>wm7E{1p#E2Sevp!A+lMlg=c{i*&){2vk*wOjKE9O z9~@fg7b=r25AXF9gp%D3ZF&l&$mWL@i3MI{r$g(+LId~zjD^}uGCk%r-G7(dj#QeA zDqj0KE73HzHJpD|(?VTHSzho`6 z?%ij%r5w*bukhNApR=nWJZ~@s zoiZ4Od#kjOGev%m7hDK)ZE^0 zj$1Y;_Bvd^>8+JTjCKmmW^Tyte~#<#UiFM<>;%rjHIv2eWxBt)aID?!R)%(?JE_5S$KNX-$xn{fF zR1=qCt~*g#wlpodEuItiZ+_WYY}qE8=N;uPAx!2$;9>V&Pe0`hp`V${X8S%ds@=|> zLCUX$CNo$1_b{}SS@;vb z{CGb+M!VbHGekM3a1y_=w9gsC)@^+59@3l$3d@3LZ>KF!YDO2%G(E9i1WQJgxeB=KipW-yTN<5VsTb;hwuKnCzjpOM` z@sw^vO@0ep)!Z(LQ|c=4RA_9O90*)%*(SwFbiMMFZ~QXZzqT5=-4UnPRpzPO*f#ln zZEbh^D2}D;`TW(;Cg3-*Ri5pXIO(q3`5Wh+XFzN%dwbxFA$Tj}-HrdN`$TJ=HS`@2 z3tzXUzlTk9QRlfs-vjY*+Aw_?w%v6&e<2jvHt4plL@$8hyO!oTL#x|xZnSzj5w_N~ zJI@|k*@m5252m-mX1ZweyrDI1_!%0Fz6U$*VkGS>K6qn5=Zyh$o6P?zpE2*M^gi~T zr#CS;Hmjm>AV#h4XiPwN#C+^#a`bp7*<-IE#;H4SK5}!wpuGS-ue8}3y)t^V0oy-q z4?63N+3yC-n{4LpPsRP#+bxS7?G~E1+X^A|BGGY?r4KM~rG3Tk!bpup6SxC=<;g=Y0@Ur}et>Dw@ zy@``yI)w2o5oYjD`S>U~VDHO;3nM6TFX@?Jud+dE`NZhb%HH-t>=~uy|5&w8JWt{i z6MO&m8dD|9Iw6$Urngf4!wMhc<^bCNt`%(_?#xr1{?e zympii3mFQh4re7vdO`2SPOZ-hl4g1r7j`!f_Zfgwle65jsifZqyXA+Y453rYv$toY zq{ZIdg~Lq-->Lao{@L`|@1)({!v%&E^TkJhUr<6nmlS5^82X#t@ex2V?1E&PA$!Pw zY>9ud{z~35dU4g~ubXM&rX26s$CD{WSy%o4Qb?2d#_^k-o_t`GeAWB)jl1G99C_^6 zWU^7l)g|Ro$Je*+N>p+DI6ZE-|N8b_DZh(qDL>WOiqF7)1y|QXaYagllH`lwr)~u` zH*jb7j2f;+zm^{qBXj)$uq7uOAuGb{WNwHGaAg2wlk<|I<3CnBvy;1V3{u=Jzx;*^ z2M|ooFsioe4!4v2Ao`H&6F@V$#HhX^%1-`+7=ddQz>}O}R9OKXlX)Vl!BqlKN-i*} zt%w|xdm`4%MFL19zcQ++h!~Tlh(6=$0O%!`88uc!kI7TScDRlJEXmI?6_3JHWQ0Yz zxl#bq$+?&hkDjT>35#WM4FLF)(=k<#!c}C8M6I~q1Jsj?F?ElkROE}qhPajiT*)sn z?;b&$WSm76xe5RZ$!{^A9z{0EIg8bC5dmV!*_ii_BAR5UM1#0m0ifhkOv9t-Ciy9` zb*?=CAo(8*^1rY!nLDE5T(1D~$@!R%|2+$nyCa6+8UY9;XJV@V3lEe1D(cSF001V# hy#rQ=Qt`2G7Cgd0U-@TwHrV#h2uDdw81>uF{ugus*Zlwh diff --git a/libraries/tcpdf/fonts/dejavusans.php b/libraries/tcpdf/fonts/dejavusans.php deleted file mode 100644 index 72147beecb..0000000000 --- a/libraries/tcpdf/fonts/dejavusans.php +++ /dev/null @@ -1,16 +0,0 @@ -32,'FontBBox'=>'[-1021 -415 1681 1167]','ItalicAngle'=>0,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>34,'StemH'=>15,'AvgWidth'=>507,'MaxWidth'=>1735,'MissingWidth'=>600); -$cbbox=array(0=>array(50,-177,550,705),33=>array(151,0,250,729),34=>array(96,458,364,729),35=>array(77,0,761,718),36=>array(83,-147,553,760),37=>array(55,-14,895,742),38=>array(63,-14,749,742),39=>array(96,458,179,729),40=>array(86,-132,310,759),41=>array(80,-132,304,759),42=>array(30,286,470,742),43=>array(106,0,732,627),44=>array(77,-116,220,124),45=>array(49,234,312,314),46=>array(107,0,210,124),47=>array(0,-93,337,729),48=>array(66,-14,570,742),49=>array(110,0,544,729),50=>array(73,0,536,742),51=>array(76,-14,556,742),52=>array(49,0,580,729),53=>array(77,-14,549,729),54=>array(70,-14,573,742),55=>array(82,0,551,729),56=>array(68,-14,568,742),57=>array(63,-14,566,742),58=>array(117,0,220,517),59=>array(77,-116,220,517),60=>array(106,46,732,581),61=>array(106,172,732,454),62=>array(106,46,732,581),63=>array(72,0,461,742),64=>array(66,-174,930,704),65=>array(8,0,676,729),66=>array(98,0,615,729),67=>array(56,-14,644,742),68=>array(98,0,711,729),69=>array(98,0,568,729),70=>array(98,0,517,729),71=>array(56,-14,693,742),72=>array(98,0,654,729),73=>array(98,0,197,729),74=>array(-52,-200,197,729),75=>array(98,0,677,729),76=>array(98,0,552,729),77=>array(98,0,765,729),78=>array(98,0,650,729),79=>array(56,-14,731,742),80=>array(98,0,569,729),81=>array(56,-129,731,742),82=>array(98,0,666,729),83=>array(66,-14,579,742),84=>array(-3,0,614,729),85=>array(87,-14,645,729),86=>array(8,0,676,729),87=>array(33,0,956,729),88=>array(30,0,654,729),89=>array(-2,0,613,729),90=>array(45,0,640,729),91=>array(86,-132,293,760),92=>array(0,-93,337,729),93=>array(97,-132,304,760),94=>array(106,457,732,729),95=>array(-10,-236,510,-166),96=>array(83,617,317,800),97=>array(60,-14,522,560),98=>array(91,-14,580,760),99=>array(55,-14,488,560),100=>array(55,-14,544,760),101=>array(55,-14,562,560),102=>array(23,0,371,760),103=>array(55,-208,544,560),104=>array(91,0,549,760),105=>array(94,0,184,760),106=>array(-18,-208,184,760),107=>array(91,0,576,760),108=>array(94,0,184,760),109=>array(91,0,889,560),110=>array(91,0,549,560),111=>array(55,-14,557,560),112=>array(91,-208,580,560),113=>array(55,-208,544,560),114=>array(91,0,411,560),115=>array(54,-14,472,560),116=>array(27,0,368,702),117=>array(85,-14,543,560),118=>array(30,0,562,547),119=>array(42,0,776,547),120=>array(29,0,559,547),121=>array(30,-208,562,547),122=>array(43,0,482,547),123=>array(125,-163,511,760),124=>array(127,-236,210,764),125=>array(125,-163,511,760),126=>array(106,228,732,399),161=>array(151,0,250,729),162=>array(84,-153,517,699),163=>array(63,0,548,742),164=>array(46,40,592,587),165=>array(40,0,595,729),166=>array(127,-171,210,699),167=>array(45,-95,454,742),168=>array(105,659,395,758),169=>array(138,0,862,725),170=>array(56,229,404,742),171=>array(77,69,518,517),172=>array(106,140,732,421),173=>array(49,234,312,314),174=>array(138,0,862,725),175=>array(104,673,396,745),176=>array(95,432,405,742),177=>array(106,0,732,627),178=>array(46,326,338,742),179=>array(48,319,350,742),180=>array(181,616,415,800),181=>array(85,-208,612,547),182=>array(77,-96,528,729),183=>array(107,285,210,409),184=>array(142,-193,344,0),185=>array(67,326,346,734),186=>array(47,229,424,742),187=>array(94,69,535,517),188=>array(67,-14,937,742),189=>array(67,-14,906,742),190=>array(48,-14,937,742),191=>array(70,-14,459,729),192=>array(8,0,676,927),193=>array(8,0,676,927),194=>array(8,0,676,928),195=>array(8,0,676,921),196=>array(8,0,676,913),197=>array(8,0,676,928),198=>array(4,0,910,729),199=>array(56,-193,644,742),200=>array(98,0,568,927),201=>array(98,0,568,927),202=>array(98,0,568,928),203=>array(98,0,568,913),204=>array(29,0,216,927),205=>array(79,0,265,927),206=>array(-1,0,297,928),207=>array(3,0,293,913),208=>array(5,0,716,729),209=>array(98,0,650,921),210=>array(56,-14,731,927),211=>array(56,-14,731,927),212=>array(56,-14,731,928),213=>array(56,-14,731,921),214=>array(56,-14,731,913),215=>array(137,31,701,596),216=>array(50,-34,737,761),217=>array(87,-14,645,927),218=>array(87,-14,645,927),219=>array(87,-14,645,928),220=>array(87,-14,645,913),221=>array(-2,0,613,927),222=>array(98,0,569,729),223=>array(91,-14,584,760),224=>array(60,-14,522,800),225=>array(60,-14,522,800),226=>array(60,-14,522,800),227=>array(60,-14,522,777),228=>array(60,-14,522,758),229=>array(60,-14,522,878),230=>array(60,-14,929,560),231=>array(55,-193,488,560),232=>array(55,-14,562,800),233=>array(55,-14,562,800),234=>array(55,-14,562,800),235=>array(55,-14,562,758),236=>array(-28,0,206,800),237=>array(70,0,304,800),238=>array(-17,0,295,800),239=>array(-6,0,284,758),240=>array(55,-14,557,760),241=>array(91,0,549,777),242=>array(55,-14,557,800),243=>array(55,-14,557,800),244=>array(55,-14,557,800),245=>array(55,-14,557,777),246=>array(55,-14,557,758),247=>array(106,73,732,554),248=>array(35,-46,576,592),249=>array(85,-14,543,800),250=>array(85,-14,543,800),251=>array(85,-14,543,800),252=>array(85,-14,543,758),253=>array(30,-208,562,800),254=>array(91,-208,580,760),255=>array(30,-208,562,758),256=>array(8,0,676,899),257=>array(60,-14,522,745),258=>array(8,0,676,946),259=>array(60,-14,522,765),260=>array(8,-193,706,729),261=>array(60,-193,563,560),262=>array(56,-14,644,927),263=>array(55,-14,488,800),264=>array(56,-14,644,928),265=>array(55,-14,488,800),266=>array(56,-14,644,914),267=>array(55,-14,488,760),268=>array(56,-14,644,928),269=>array(55,-14,488,800),270=>array(98,0,711,928),271=>array(55,-14,732,760),272=>array(5,0,716,729),273=>array(55,-14,619,760),274=>array(98,0,568,900),275=>array(55,-14,562,745),276=>array(98,0,568,928),277=>array(55,-14,562,785),278=>array(98,0,568,914),279=>array(55,-14,562,760),280=>array(98,-193,569,729),281=>array(55,-193,562,560),282=>array(98,0,568,925),283=>array(55,-14,562,797),284=>array(56,-14,693,928),285=>array(55,-208,544,800),286=>array(56,-14,693,928),287=>array(55,-208,544,785),288=>array(56,-14,693,914),289=>array(55,-208,544,760),290=>array(56,-250,693,742),291=>array(55,-208,544,775),292=>array(98,0,654,928),293=>array(-13,0,549,928),294=>array(98,0,818,729),295=>array(59,0,578,760),296=>array(-14,0,309,921),297=>array(-22,0,300,777),298=>array(1,0,293,899),299=>array(-7,0,285,745),300=>array(-5,0,300,928),301=>array(-14,0,292,785),302=>array(86,-193,268,729),303=>array(73,-193,255,760),304=>array(98,0,198,914),305=>array(94,0,184,560),306=>array(98,-200,492,729),307=>array(94,-208,461,760),308=>array(-52,-200,296,928),309=>array(-18,-208,295,800),310=>array(98,-235,677,729),311=>array(91,-235,576,760),312=>array(91,0,576,547),313=>array(98,0,552,928),314=>array(94,0,286,928),315=>array(98,-235,552,729),316=>array(66,-235,209,760),317=>array(98,0,552,729),318=>array(94,0,375,760),319=>array(98,0,552,729),320=>array(94,0,314,760),321=>array(-7,0,557,729),322=>array(1,0,285,760),323=>array(98,0,650,928),324=>array(91,0,549,803),325=>array(98,-235,650,729),326=>array(91,-235,549,560),327=>array(98,0,650,921),328=>array(91,0,549,800),329=>array(100,0,715,729),330=>array(98,-208,637,742),331=>array(91,-208,549,560),332=>array(56,-14,731,899),333=>array(55,-14,557,745),334=>array(56,-14,731,928),335=>array(55,-14,557,785),336=>array(56,-14,731,927),337=>array(55,-14,557,800),338=>array(56,0,1006,729),339=>array(55,-14,970,560),340=>array(98,0,666,928),341=>array(91,0,447,803),342=>array(98,-235,666,729),343=>array(63,-235,411,560),344=>array(98,0,666,921),345=>array(91,0,419,800),346=>array(66,-14,579,928),347=>array(54,-14,472,803),348=>array(66,-14,579,928),349=>array(54,-14,472,800),350=>array(66,-193,579,742),351=>array(54,-193,472,560),352=>array(66,-14,579,928),353=>array(54,-14,472,800),354=>array(-3,-193,614,729),355=>array(27,-193,368,702),356=>array(-3,0,614,921),357=>array(27,0,374,813),358=>array(-3,0,614,729),359=>array(27,0,368,702),360=>array(87,-14,645,921),361=>array(85,-14,543,777),362=>array(87,-14,645,899),363=>array(85,-14,543,745),364=>array(87,-14,645,928),365=>array(85,-14,543,785),366=>array(87,-14,645,929),367=>array(85,-14,543,849),368=>array(87,-14,645,927),369=>array(85,-14,546,800),370=>array(87,-193,645,729),371=>array(85,-193,613,560),372=>array(33,0,956,932),373=>array(42,0,776,803),374=>array(-2,0,613,932),375=>array(30,-208,562,803),376=>array(-2,0,613,913),377=>array(45,0,640,928),378=>array(43,0,482,803),379=>array(45,0,640,914),380=>array(43,0,482,760),381=>array(45,0,640,928),382=>array(43,0,482,800),383=>array(23,0,371,760),384=>array(16,-14,580,760),385=>array(-51,0,664,729),386=>array(98,0,615,729),387=>array(91,-14,580,760),388=>array(0,0,615,729),389=>array(0,-14,580,760),390=>array(56,-14,644,742),391=>array(56,-14,794,924),392=>array(55,-14,600,760),393=>array(5,0,716,729),394=>array(-51,0,760,729),395=>array(98,0,615,729),396=>array(55,-14,544,760),397=>array(55,-208,557,548),398=>array(64,0,534,729),399=>array(57,-14,731,742),400=>array(80,-14,560,742),401=>array(-52,-200,517,729),402=>array(-63,-208,371,760),403=>array(56,-14,824,924),404=>array(4,-210,683,729),405=>array(91,0,910,760),406=>array(98,0,347,729),407=>array(5,0,290,729),408=>array(98,0,746,742),409=>array(90,0,576,760),410=>array(5,0,271,760),411=>array(30,0,562,760),412=>array(87,-14,894,729),413=>array(-52,-200,650,729),414=>array(91,-208,549,560),415=>array(56,-14,731,742),416=>array(50,-14,764,760),417=>array(58,-14,603,615),418=>array(56,-14,851,742),419=>array(55,-208,668,560),420=>array(-51,0,618,729),421=>array(90,-208,580,760),422=>array(98,-129,666,729),423=>array(56,-14,569,742),424=>array(49,-14,467,560),425=>array(98,0,568,729),426=>array(-132,-208,355,760),427=>array(27,-208,368,702),428=>array(12,0,614,729),429=>array(27,0,368,760),430=>array(-3,-200,614,729),431=>array(84,-4,796,760),432=>array(86,-14,676,615),433=>array(38,-14,726,724),434=>array(98,-15,683,729),435=>array(-2,0,742,742),436=>array(30,-208,730,560),437=>array(45,0,640,729),438=>array(43,0,482,547),439=>array(78,-31,621,729),440=>array(45,-31,588,729),441=>array(51,-213,531,547),442=>array(55,-208,488,547),443=>array(73,0,536,742),444=>array(45,-31,622,729),445=>array(51,-213,531,547),446=>array(43,-14,456,702),447=>array(91,-208,580,560),448=>array(98,-208,197,729),449=>array(98,-208,394,729),450=>array(10,-208,451,729),451=>array(98,0,197,729),452=>array(98,0,1352,928),453=>array(98,0,1211,800),454=>array(55,-14,1071,800),455=>array(98,-200,768,729),456=>array(98,-208,733,760),457=>array(94,-208,367,760),458=>array(98,-200,868,729),459=>array(98,-208,839,760),460=>array(91,-208,733,760),461=>array(8,0,676,928),462=>array(60,-14,522,800),463=>array(-1,0,297,928),464=>array(-16,0,296,800),465=>array(56,-14,731,928),466=>array(55,-14,557,800),467=>array(87,-14,645,928),468=>array(85,-14,543,800),469=>array(87,-14,645,1025),470=>array(85,-14,543,899),471=>array(87,-14,645,1044),472=>array(85,-14,543,892),473=>array(87,-14,645,1044),474=>array(85,-14,543,892),475=>array(87,-14,645,1047),476=>array(85,-14,543,892),477=>array(55,-14,562,560),478=>array(8,0,676,1025),479=>array(60,-14,522,899),480=>array(8,0,676,1025),481=>array(60,-14,522,869),482=>array(4,0,910,900),483=>array(60,-14,929,743),484=>array(56,-14,752,742),485=>array(55,-208,622,560),486=>array(56,-14,693,928),487=>array(55,-208,544,798),488=>array(98,0,677,928),489=>array(-11,0,576,928),490=>array(56,-193,731,742),491=>array(55,-193,557,560),492=>array(56,-193,731,899),493=>array(55,-193,557,745),494=>array(78,-31,621,928),495=>array(43,-213,523,800),496=>array(-18,-208,299,800),497=>array(98,0,1352,729),498=>array(98,0,1211,729),499=>array(55,-14,1071,760),500=>array(56,-14,693,928),501=>array(55,-208,544,798),502=>array(98,-14,1022,729),503=>array(98,-208,626,742),504=>array(98,0,650,927),505=>array(91,0,549,799),506=>array(8,0,676,931),507=>array(60,-14,607,931),508=>array(4,0,910,928),509=>array(60,-14,929,798),510=>array(50,-34,737,928),511=>array(35,-46,576,798),512=>array(8,0,676,930),513=>array(60,-14,522,799),514=>array(8,0,676,901),515=>array(60,-14,522,785),516=>array(98,0,568,930),517=>array(55,-14,562,798),518=>array(98,0,568,901),519=>array(55,-14,562,785),520=>array(-43,0,306,930),521=>array(-30,0,313,798),522=>array(2,0,308,901),523=>array(-14,0,292,785),524=>array(56,-14,731,930),525=>array(55,-14,557,799),526=>array(56,-14,731,901),527=>array(55,-14,557,785),528=>array(97,0,666,930),529=>array(63,0,411,798),530=>array(98,0,666,901),531=>array(91,0,421,785),532=>array(87,-14,645,930),533=>array(85,-14,543,799),534=>array(87,-14,645,901),535=>array(85,-14,543,785),536=>array(66,-240,579,742),537=>array(54,-240,472,560),538=>array(-3,-240,614,729),539=>array(27,-240,368,702),540=>array(76,-210,556,742),541=>array(35,-211,467,560),542=>array(98,0,654,928),543=>array(-8,0,549,928),544=>array(98,-208,637,742),545=>array(55,-70,783,760),546=>array(55,-14,643,742),547=>array(55,-14,555,632),548=>array(45,-208,640,729),549=>array(43,-208,482,547),550=>array(8,0,676,914),551=>array(60,-14,522,760),552=>array(98,-193,568,729),553=>array(55,-193,562,560),554=>array(56,-14,731,1025),555=>array(55,-14,557,899),556=>array(56,-14,731,1025),557=>array(55,-14,557,864),558=>array(56,-14,731,914),559=>array(55,-14,557,760),560=>array(56,-14,731,1025),561=>array(55,-14,557,899),562=>array(-2,0,613,899),563=>array(30,-208,562,745),564=>array(67,-70,420,757),565=>array(91,-70,788,560),566=>array(27,-70,422,702),567=>array(-18,-208,184,547),568=>array(55,-14,943,760),569=>array(55,-208,943,560),570=>array(-1,-34,686,761),571=>array(6,-34,692,761),572=>array(4,-46,545,592),573=>array(5,0,552,729),574=>array(-38,-34,649,761),575=>array(54,-242,512,560),576=>array(43,-242,525,547),577=>array(39,0,569,729),578=>array(39,0,445,560),579=>array(5,0,615,729),580=>array(6,-14,726,729),581=>array(8,0,676,729),582=>array(98,-93,568,822),583=>array(55,-93,562,640),584=>array(-52,-200,290,729),585=>array(-18,-208,264,760),586=>array(56,-200,836,743),587=>array(55,-208,656,560),588=>array(5,0,666,729),589=>array(7,0,411,560),590=>array(-5,0,615,729),591=>array(5,-208,588,547),592=>array(85,-14,547,560),593=>array(55,-14,544,560),594=>array(91,-14,580,560),595=>array(91,-14,580,760),596=>array(62,-14,495,560),597=>array(55,-69,488,560),598=>array(55,-208,656,760),599=>array(55,-14,715,760),600=>array(55,-14,562,560),601=>array(55,-14,562,560),602=>array(61,-14,814,560),603=>array(65,-14,473,561),604=>array(65,-14,473,561),605=>array(65,-14,771,561),606=>array(55,-14,596,561),607=>array(-18,-208,264,547),608=>array(55,-208,715,760),609=>array(55,-208,544,547),610=>array(55,-14,539,560),611=>array(47,-210,549,547),612=>array(47,-14,549,547),613=>array(85,-208,543,547),614=>array(91,0,549,760),615=>array(91,-208,549,760),616=>array(7,0,265,760),617=>array(81,0,304,547),618=>array(57,0,314,547),619=>array(37,0,359,760),620=>array(38,0,416,760),621=>array(94,-208,296,760),622=>array(94,-213,651,760),623=>array(91,-13,889,548),624=>array(91,-208,889,548),625=>array(91,-208,889,560),626=>array(-18,-208,552,560),627=>array(91,-208,661,560),628=>array(87,0,549,547),629=>array(55,-14,557,560),630=>array(55,0,768,547),631=>array(72,-18,655,561),632=>array(55,-208,602,760),633=>array(0,-13,320,547),634=>array(0,-13,320,755),635=>array(0,-208,433,547),636=>array(91,-207,411,560),637=>array(91,-208,411,560),638=>array(64,0,437,560),639=>array(57,0,437,560),640=>array(91,0,574,547),641=>array(91,0,574,547),642=>array(54,-208,472,560),643=>array(-19,-208,355,760),644=>array(-19,-208,355,760),645=>array(27,-208,401,549),646=>array(-132,-208,355,760),647=>array(27,-156,368,546),648=>array(27,-208,370,702),649=>array(0,-14,634,547),650=>array(55,-15,564,547),651=>array(94,0,545,548),652=>array(30,0,562,547),653=>array(42,0,776,547),654=>array(30,0,562,760),655=>array(50,0,552,547),656=>array(43,-208,593,547),657=>array(43,-54,482,547),658=>array(43,-213,523,547),659=>array(53,-213,553,547),660=>array(43,0,456,759),661=>array(43,0,456,759),662=>array(43,0,456,759),663=>array(43,-213,456,760),664=>array(56,-14,731,742),665=>array(91,0,530,547),666=>array(55,-14,596,561),667=>array(55,-14,724,760),668=>array(91,0,563,547),669=>array(-132,-208,272,760),670=>array(91,-213,576,547),671=>array(91,0,493,547),672=>array(55,-208,746,759),673=>array(43,0,456,759),674=>array(43,0,456,759),675=>array(55,-14,970,760),676=>array(55,-213,1014,760),677=>array(55,-54,970,760),678=>array(27,0,781,702),679=>array(27,-208,629,760),680=>array(27,-70,723,702),681=>array(23,-208,804,760),682=>array(94,0,657,760),683=>array(94,0,610,760),684=>array(26,-15,489,640),685=>array(26,84,489,640),686=>array(0,-214,570,760),687=>array(0,-208,683,760),688=>array(57,326,346,751),689=>array(57,326,346,751),690=>array(-11,209,116,751),691=>array(57,326,259,640),692=>array(35,319,236,632),693=>array(35,209,307,632),694=>array(16,326,320,632),695=>array(26,326,489,632),696=>array(19,209,354,632),697=>array(78,557,203,800),698=>array(78,557,384,800),699=>array(85,489,228,729),700=>array(87,499,230,729),701=>array(96,616,239,856),702=>array(57,492,191,760),703=>array(57,492,191,760),704=>array(57,326,317,751),705=>array(57,326,317,751),706=>array(130,524,370,836),707=>array(130,524,370,836),708=>array(94,561,406,800),709=>array(94,561,406,800),710=>array(94,616,406,800),711=>array(94,616,406,800),712=>array(104,488,171,759),713=>array(104,673,396,745),714=>array(181,616,415,800),715=>array(83,617,317,800),716=>array(104,-148,171,123),717=>array(104,-156,396,-84),718=>array(83,-236,317,-54),719=>array(181,-236,415,-53),720=>array(54,0,229,517),721=>array(54,356,229,517),722=>array(57,249,191,517),723=>array(57,249,191,517),724=>array(140,229,360,448),725=>array(140,229,360,448),726=>array(49,125,341,417),727=>array(49,234,269,307),728=>array(97,645,403,785),729=>array(200,658,300,758),730=>array(116,610,384,878),731=>array(162,-193,344,0),732=>array(89,639,411,777),733=>array(117,616,460,800),734=>array(-0,233,334,504),735=>array(117,616,383,800),736=>array(57,208,374,632),737=>array(60,326,116,751),738=>array(57,326,320,648),739=>array(57,326,391,632),740=>array(57,326,317,751),741=>array(104,0,389,668),742=>array(104,0,389,668),743=>array(104,0,389,668),744=>array(104,0,389,668),745=>array(104,0,389,668),748=>array(94,-260,406,-21),749=>array(104,610,396,808),750=>array(85,489,428,729),755=>array(116,-240,384,28),759=>array(89,-192,411,-55),768=>array(-418,560,-184,800),769=>array(-320,560,-86,800),770=>array(-406,560,-94,800),771=>array(-412,639,-90,777),772=>array(-394,673,-102,745),773=>array(-510,686,10,755),774=>array(-407,645,-101,785),775=>array(-296,560,-206,760),776=>array(-395,560,-105,758),777=>array(-348,618,-129,810),778=>array(-385,610,-117,878),779=>array(-381,616,-38,800),780=>array(-404,560,-92,800),781=>array(-283,615,-217,832),782=>array(-383,615,-117,832),783=>array(-455,616,-112,800),784=>array(-407,645,-101,917),785=>array(-407,645,-101,785),786=>array(-235,489,-92,645),787=>array(-305,595,-187,844),788=>array(-305,595,-187,844),789=>array(-66,575,66,759),790=>array(-418,-266,-184,-83),791=>array(-320,-267,-86,-83),792=>array(-357,-240,-221,-24),793=>array(-279,-240,-143,-24),794=>array(-208,690,31,930),795=>array(-133,427,60,609),796=>array(-313,-241,-208,-32),797=>array(-370,-240,-130,-87),798=>array(-370,-240,-130,-87),799=>array(-357,-240,-143,-24),800=>array(-370,-184,-130,-117),801=>array(-315,-208,-23,63),802=>array(-317,-208,-25,63),803=>array(-296,-183,-206,-69),804=>array(-396,-183,-106,-84),805=>array(-355,-241,-146,-32),806=>array(-323,-240,-180,-84),807=>array(-358,-193,-156,0),808=>array(-338,-193,-156,0),809=>array(-283,-240,-217,-47),810=>array(-383,-211,-114,-50),811=>array(-452,-222,-51,-82),812=>array(-404,-240,-92,-57),813=>array(-407,-240,-95,-57),814=>array(-407,-222,-101,-82),815=>array(-407,-224,-101,-83),816=>array(-412,-222,-90,-84),817=>array(-394,-156,-102,-84),818=>array(-510,-236,10,-166),819=>array(-510,-236,10,-9),820=>array(-557,240,-41,381),821=>array(-316,221,-59,301),822=>array(-634,221,-0,301),823=>array(-574,-46,-33,592),824=>array(-741,-34,-54,761),825=>array(-291,-241,-187,-32),826=>array(-382,-206,-113,-44),827=>array(-359,-240,-139,-21),828=>array(-452,-222,-51,-82),829=>array(-354,619,-138,834),830=>array(-247,595,-109,853),831=>array(-510,528,10,755),832=>array(-418,617,-184,800),833=>array(-320,616,-86,800),834=>array(-412,639,-90,777),835=>array(-305,595,-187,844),836=>array(-387,659,-77,978),837=>array(-278,-208,-171,-45),838=>array(-396,639,-104,786),839=>array(-360,-226,-140,-35),840=>array(-365,-240,-135,-47),841=>array(-360,-240,-140,-21),842=>array(-411,616,-89,800),843=>array(-411,567,-89,850),844=>array(-411,596,-89,820),845=>array(-452,-230,-48,-30),846=>array(-350,-240,-150,-45),849=>array(-316,610,-184,878),850=>array(-407,547,-101,855),851=>array(-354,-240,-138,-24),855=>array(-316,610,-184,878),856=>array(-103,658,-3,758),858=>array(-430,-241,-71,-32),860=>array(-445,-237,445,-60),861=>array(-445,802,445,979),862=>array(-445,855,445,927),863=>array(-445,-156,445,-84),864=>array(-354,756,354,894),865=>array(-445,752,445,929),866=>array(-442,-230,447,-30),880=>array(98,0,555,729),881=>array(94,0,477,547),882=>array(98,0,764,729),883=>array(98,0,549,729),884=>array(78,557,203,800),885=>array(78,-208,203,35),886=>array(98,0,650,729),887=>array(91,0,559,547),890=>array(214,-208,321,-45),891=>array(62,-14,495,560),892=>array(55,-14,488,560),893=>array(62,-14,495,560),894=>array(77,-116,220,517),900=>array(181,616,415,800),901=>array(105,659,415,978),902=>array(8,0,676,800),903=>array(107,285,210,409),904=>array(-12,0,682,800),905=>array(-6,0,765,800),906=>array(-9,0,311,800),908=>array(-7,-14,750,800),910=>array(-15,0,821,800),911=>array(-18,0,752,800),912=>array(2,0,313,978),913=>array(8,0,676,729),914=>array(98,0,615,729),915=>array(98,0,552,729),916=>array(8,0,676,729),917=>array(98,0,568,729),918=>array(45,0,640,729),919=>array(98,0,654,729),920=>array(56,-14,731,742),921=>array(98,0,197,729),922=>array(98,0,677,729),923=>array(8,0,676,729),924=>array(98,0,765,729),925=>array(98,0,650,729),926=>array(98,0,548,729),927=>array(56,-14,731,742),928=>array(98,0,654,729),929=>array(98,0,569,729),931=>array(98,0,568,729),932=>array(-3,0,614,729),933=>array(-2,0,613,729),934=>array(56,0,731,729),935=>array(30,0,654,729),936=>array(56,0,732,729),937=>array(38,0,726,738),938=>array(3,0,293,913),939=>array(-2,0,613,913),940=>array(55,-12,611,800),941=>array(65,-14,473,800),942=>array(91,-208,549,800),943=>array(81,0,324,800),944=>array(73,-14,521,978),945=>array(55,-12,611,559),946=>array(94,-208,566,766),947=>array(16,-208,562,547),948=>array(55,-14,557,742),949=>array(65,-14,473,561),950=>array(52,-210,496,760),951=>array(91,-208,549,560),952=>array(55,-11,557,768),953=>array(81,0,304,547),954=>array(93,0,565,547),955=>array(30,0,562,760),956=>array(85,-208,612,547),957=>array(36,0,512,547),958=>array(52,-210,500,760),959=>array(55,-14,557,560),960=>array(36,-19,574,547),961=>array(91,-208,580,560),962=>array(55,-210,488,560),963=>array(55,-14,604,547),964=>array(49,0,553,547),965=>array(73,-14,521,547),966=>array(55,-208,602,551),967=>array(29,-208,549,547),968=>array(55,-208,602,547),969=>array(66,-14,769,547),970=>array(2,0,311,758),971=>array(73,-14,521,758),972=>array(55,-14,557,800),973=>array(73,-14,521,800),974=>array(66,-14,769,800),975=>array(98,-208,677,729),976=>array(82,-11,538,768),977=>array(55,-11,557,768),978=>array(42,0,665,734),979=>array(-15,0,829,800),980=>array(42,0,665,913),981=>array(55,-208,602,760),982=>array(32,-14,803,547),983=>array(55,-206,600,550),984=>array(56,-207,731,742),985=>array(55,-208,557,560),986=>array(68,-210,583,729),987=>array(55,-210,540,547),988=>array(98,0,517,729),989=>array(-94,-208,409,760),990=>array(87,-2,604,729),991=>array(93,0,566,759),992=>array(56,-208,797,742),993=>array(58,-180,573,559),994=>array(56,-213,877,729),995=>array(66,-208,769,547),996=>array(56,-208,660,742),997=>array(55,-208,568,560),998=>array(98,-213,735,729),999=>array(22,-14,571,575),1000=>array(39,-208,630,745),1001=>array(49,-208,552,560),1002=>array(56,0,714,742),1003=>array(26,0,599,560),1004=>array(56,-14,643,758),1005=>array(55,-14,544,758),1006=>array(21,-208,589,729),1007=>array(27,-208,510,726),1008=>array(55,-7,600,550),1009=>array(91,-208,580,560),1010=>array(55,-14,488,560),1011=>array(-18,-208,184,760),1012=>array(56,-14,731,742),1013=>array(55,-14,480,560),1014=>array(96,-14,521,560),1015=>array(98,0,569,729),1016=>array(91,-208,580,760),1017=>array(56,-14,644,742),1018=>array(98,0,765,729),1019=>array(62,-208,587,547),1020=>array(42,-208,580,560),1021=>array(56,-14,644,742),1022=>array(56,-14,644,742),1023=>array(56,-14,644,742),1024=>array(98,0,568,927),1025=>array(98,0,568,913),1026=>array(-3,-200,709,729),1027=>array(98,0,552,927),1028=>array(56,-14,644,742),1029=>array(66,-14,579,742),1030=>array(98,0,197,729),1031=>array(3,0,293,913),1032=>array(-52,-200,197,729),1033=>array(41,0,1023,729),1034=>array(98,0,975,729),1035=>array(-3,0,709,729),1036=>array(98,0,690,927),1037=>array(98,0,650,927),1038=>array(17,0,592,928),1039=>array(98,-157,654,729),1040=>array(8,0,676,729),1041=>array(98,0,615,729),1042=>array(98,0,615,729),1043=>array(98,0,552,729),1044=>array(49,-157,732,729),1045=>array(98,0,568,729),1046=>array(20,0,1058,729),1047=>array(66,-14,575,742),1048=>array(98,0,650,729),1049=>array(98,0,650,928),1050=>array(98,0,690,729),1051=>array(41,0,653,729),1052=>array(98,0,765,729),1053=>array(98,0,654,729),1054=>array(56,-14,731,742),1055=>array(98,0,654,729),1056=>array(98,0,569,729),1057=>array(56,-14,644,742),1058=>array(-3,0,614,729),1059=>array(17,0,592,729),1060=>array(59,0,802,729),1061=>array(30,0,654,729),1062=>array(98,-157,737,729),1063=>array(85,0,587,729),1064=>array(98,0,971,729),1065=>array(98,-157,1054,729),1066=>array(29,0,762,729),1067=>array(98,0,784,729),1068=>array(98,0,615,729),1069=>array(54,-14,642,742),1070=>array(103,-14,1023,742),1071=>array(66,0,597,729),1072=>array(60,-14,522,560),1073=>array(55,-14,562,777),1074=>array(91,0,530,547),1075=>array(91,0,477,547),1076=>array(52,-138,639,547),1077=>array(55,-14,562,560),1078=>array(34,0,867,547),1079=>array(65,-14,473,561),1080=>array(91,0,559,547),1081=>array(91,0,559,760),1082=>array(91,0,571,547),1083=>array(37,0,556,547),1084=>array(91,0,664,547),1085=>array(91,0,563,547),1086=>array(55,-14,557,560),1087=>array(91,0,563,547),1088=>array(91,-208,580,560),1089=>array(55,-14,488,560),1090=>array(29,0,553,547),1091=>array(30,-208,562,547),1092=>array(55,-208,800,729),1093=>array(29,0,559,547),1094=>array(91,-138,635,547),1095=>array(73,0,500,547),1096=>array(91,0,824,547),1097=>array(91,-138,896,547),1098=>array(30,0,647,547),1099=>array(91,0,701,560),1100=>array(91,0,530,547),1101=>array(55,-14,488,560),1102=>array(94,-14,787,560),1103=>array(57,0,517,547),1104=>array(55,-14,562,802),1105=>array(55,-14,562,758),1106=>array(23,-208,570,760),1107=>array(91,0,480,803),1108=>array(55,-14,488,560),1109=>array(54,-14,472,560),1110=>array(94,0,184,760),1111=>array(-6,0,284,758),1112=>array(-18,-208,184,760),1113=>array(37,0,843,547),1114=>array(91,0,839,547),1115=>array(23,0,567,760),1116=>array(91,0,571,803),1117=>array(91,0,559,802),1118=>array(30,-208,562,760),1119=>array(91,-138,563,547),1120=>array(56,-14,877,729),1121=>array(66,-14,769,547),1122=>array(15,0,711,729),1123=>array(15,0,613,760),1124=>array(103,-14,888,742),1125=>array(94,-14,688,560),1126=>array(8,0,871,729),1127=>array(25,0,758,547),1128=>array(98,0,1135,729),1129=>array(94,0,977,547),1130=>array(56,0,731,729),1131=>array(52,0,560,547),1132=>array(98,0,971,729),1133=>array(94,0,772,547),1134=>array(56,-208,556,935),1135=>array(44,-193,473,753),1136=>array(8,0,844,729),1137=>array(24,-208,852,765),1138=>array(56,-14,731,742),1139=>array(55,-14,557,560),1140=>array(8,0,769,742),1141=>array(24,0,640,560),1142=>array(8,0,769,930),1143=>array(24,0,640,800),1144=>array(56,-208,962,742),1145=>array(55,-208,875,560),1146=>array(56,-14,897,742),1147=>array(55,-14,704,560),1148=>array(58,-14,1122,932),1149=>array(74,-14,954,758),1150=>array(56,-14,877,900),1151=>array(66,-14,769,734),1152=>array(56,-208,644,742),1153=>array(55,-208,488,560),1154=>array(29,-44,474,457),1155=>array(-519,608,-93,810),1156=>array(-372,645,4,788),1157=>array(-288,595,-169,797),1158=>array(-288,595,-169,797),1159=>array(-776,606,4,788),1160=>array(-1021,-180,409,922),1161=>array(-957,-280,345,1022),1162=>array(98,-208,748,928),1163=>array(94,-208,652,760),1164=>array(16,0,615,729),1165=>array(19,0,534,702),1166=>array(98,0,610,729),1167=>array(91,-208,580,560),1168=>array(98,0,552,878),1169=>array(91,0,477,700),1170=>array(35,0,617,729),1171=>array(27,0,542,547),1172=>array(98,-200,600,729),1173=>array(91,-208,505,547),1174=>array(20,-157,1071,729),1175=>array(34,-138,876,547),1176=>array(66,-193,575,742),1177=>array(65,-193,473,561),1178=>array(98,-157,713,729),1179=>array(91,-138,587,547),1180=>array(98,0,690,729),1181=>array(91,0,571,547),1182=>array(16,0,690,729),1183=>array(30,0,571,760),1184=>array(24,0,837,729),1185=>array(21,0,688,547),1186=>array(98,-157,752,729),1187=>array(94,-138,656,547),1188=>array(98,0,1009,729),1189=>array(94,0,862,547),1190=>array(98,-200,1057,729),1191=>array(94,-208,891,547),1192=>array(56,-14,871,743),1193=>array(55,-14,684,560),1194=>array(56,-193,644,742),1195=>array(55,-193,488,560),1196=>array(-3,-157,614,729),1197=>array(29,-138,553,547),1198=>array(-2,0,613,729),1199=>array(30,-208,562,547),1200=>array(-2,0,613,729),1201=>array(30,-208,562,547),1202=>array(30,-157,654,729),1203=>array(29,-138,559,547),1204=>array(-3,-157,910,729),1205=>array(2,-138,782,547),1206=>array(85,-157,686,729),1207=>array(73,-138,590,547),1208=>array(85,0,587,729),1209=>array(73,0,500,547),1210=>array(85,0,587,729),1211=>array(91,0,549,760),1212=>array(10,-14,885,742),1213=>array(7,-14,675,560),1214=>array(10,-184,885,742),1215=>array(7,-161,675,560),1216=>array(98,0,197,729),1217=>array(20,0,1058,928),1218=>array(34,0,867,785),1219=>array(98,-200,651,729),1220=>array(93,-208,566,547),1221=>array(26,-208,751,729),1222=>array(22,-208,646,547),1223=>array(98,-200,654,729),1224=>array(94,-208,566,547),1225=>array(98,-208,752,729),1226=>array(94,-208,656,547),1227=>array(85,-157,587,729),1228=>array(73,-138,500,547),1229=>array(98,-208,863,729),1230=>array(94,-208,750,547),1231=>array(94,0,184,760),1232=>array(8,0,676,946),1233=>array(60,-14,522,765),1234=>array(8,0,676,913),1235=>array(60,-14,522,758),1236=>array(4,0,910,729),1237=>array(60,-14,929,560),1238=>array(98,0,568,928),1239=>array(55,-14,562,785),1240=>array(57,-14,731,742),1241=>array(55,-14,562,560),1242=>array(57,-14,731,913),1243=>array(55,-14,562,758),1244=>array(20,0,1058,913),1245=>array(34,0,867,758),1246=>array(66,-14,575,913),1247=>array(65,-14,473,758),1248=>array(78,-31,621,729),1249=>array(43,-213,523,547),1250=>array(98,0,650,899),1251=>array(91,0,559,745),1252=>array(98,0,650,913),1253=>array(91,0,559,758),1254=>array(56,-14,731,913),1255=>array(55,-14,557,758),1256=>array(56,-14,731,742),1257=>array(55,-14,557,560),1258=>array(56,-14,731,913),1259=>array(55,-14,557,758),1260=>array(54,-14,642,913),1261=>array(55,-14,488,758),1262=>array(17,0,592,899),1263=>array(30,-208,562,745),1264=>array(17,0,592,913),1265=>array(30,-208,562,758),1266=>array(17,0,592,927),1267=>array(30,-208,562,800),1268=>array(85,0,587,913),1269=>array(73,0,500,758),1270=>array(98,-157,552,729),1271=>array(91,-138,477,547),1272=>array(98,0,784,913),1273=>array(91,0,701,758),1274=>array(35,-208,617,729),1275=>array(27,-208,542,547),1276=>array(30,-200,646,729),1277=>array(29,-208,549,547),1278=>array(30,0,654,729),1279=>array(29,0,559,547),1280=>array(71,0,588,729),1281=>array(55,0,495,547),1282=>array(71,-14,908,729),1283=>array(55,-14,806,547),1284=>array(98,-14,876,742),1285=>array(83,-14,784,561),1286=>array(98,-208,654,742),1287=>array(83,-208,564,561),1288=>array(26,-14,974,729),1289=>array(22,-14,866,547),1290=>array(98,-14,1022,729),1291=>array(94,-14,876,547),1292=>array(56,-14,692,742),1293=>array(55,-14,534,560),1294=>array(-3,-14,675,729),1295=>array(2,-14,620,547),1296=>array(80,-14,560,742),1297=>array(65,-14,473,561),1298=>array(41,-200,653,729),1299=>array(37,-208,556,547),1300=>array(41,0,1139,729),1301=>array(37,0,962,547),1302=>array(98,0,863,729),1303=>array(91,-208,832,560),1304=>array(66,0,967,729),1305=>array(57,-14,933,560),1306=>array(56,-129,731,742),1307=>array(55,-208,544,560),1308=>array(33,0,956,729),1309=>array(42,0,776,547),1310=>array(98,0,690,729),1311=>array(91,0,571,547),1312=>array(41,-200,1056,729),1313=>array(37,-208,881,547),1314=>array(98,-200,1057,729),1315=>array(91,-208,888,547),1316=>array(98,-157,752,729),1317=>array(91,-138,653,547),1329=>array(87,-29,680,729),1330=>array(87,0,650,743),1331=>array(45,0,729,743),1332=>array(44,0,724,743),1333=>array(87,-14,650,729),1334=>array(87,0,692,744),1335=>array(92,0,616,729),1336=>array(87,0,650,743),1337=>array(87,-14,835,743),1338=>array(45,-14,729,729),1339=>array(92,0,650,729),1340=>array(92,0,533,729),1341=>array(92,-14,849,729),1342=>array(129,-13,763,742),1343=>array(87,0,645,729),1344=>array(34,-26,638,729),1345=>array(82,-23,688,744),1346=>array(49,0,729,743),1347=>array(51,0,715,735),1348=>array(87,-14,767,729),1349=>array(71,-14,668,743),1350=>array(0,-14,680,729),1351=>array(78,-15,684,729),1352=>array(87,0,645,743),1353=>array(59,-28,664,744),1354=>array(44,0,713,743),1355=>array(82,0,686,744),1356=>array(87,0,767,743),1357=>array(87,-14,645,729),1358=>array(49,0,729,729),1359=>array(73,-14,632,741),1360=>array(87,0,645,743),1361=>array(78,-14,675,743),1362=>array(92,0,538,729),1363=>array(59,0,752,729),1364=>array(24,0,679,743),1365=>array(56,-14,731,742),1366=>array(54,-13,746,729),1369=>array(57,492,191,760),1370=>array(87,499,230,729),1371=>array(0,620,234,803),1372=>array(2,618,356,893),1373=>array(-0,617,233,800),1374=>array(4,613,401,866),1375=>array(44,618,462,760),1377=>array(85,-14,883,547),1378=>array(91,-208,549,560),1379=>array(55,-208,648,560),1380=>array(91,-208,653,560),1381=>array(85,-14,548,760),1382=>array(55,-208,648,560),1383=>array(91,0,490,760),1384=>array(91,-208,549,560),1385=>array(91,-208,738,560),1386=>array(55,-14,648,760),1387=>array(91,-208,549,760),1388=>array(91,-208,303,547),1389=>array(91,-208,889,760),1390=>array(55,-14,557,760),1391=>array(85,-208,543,760),1392=>array(91,0,549,760),1393=>array(52,-15,523,760),1394=>array(91,-208,653,560),1395=>array(68,-14,544,768),1396=>array(85,-14,647,760),1397=>array(-21,-208,181,547),1398=>array(-19,-14,543,760),1399=>array(0,-208,435,560),1400=>array(91,0,549,560),1401=>array(5,-208,370,547),1402=>array(85,-208,883,547),1403=>array(54,-208,494,561),1404=>array(91,0,609,560),1405=>array(85,-14,543,560),1406=>array(85,-208,647,760),1407=>array(85,-14,889,560),1408=>array(91,-208,549,560),1409=>array(54,-208,543,560),1410=>array(91,0,449,547),1411=>array(85,-208,889,760),1412=>array(20,-208,580,560),1413=>array(54,-14,556,560),1414=>array(34,-208,766,760),1415=>array(85,-14,812,760),1417=>array(117,0,220,415),1418=>array(49,212,312,314),1456=>array(283,-217,356,-22),1457=>array(83,-217,438,-22),1458=>array(125,-217,454,-22),1459=>array(125,-217,454,-22),1460=>array(283,-159,356,-85),1461=>array(222,-159,417,-85),1462=>array(222,-217,417,-22),1463=>array(173,-159,466,-85),1464=>array(173,-193,466,-46),1465=>array(0,625,73,698),1466=>array(0,625,73,698),1467=>array(148,-237,465,-17),1468=>array(288,237,361,310),1469=>array(283,-217,356,-22),1470=>array(49,472,312,552),1471=>array(173,625,466,698),1472=>array(102,-98,193,645),1473=>array(637,625,710,698),1474=>array(96,625,169,698),1475=>array(102,0,193,547),1478=>array(50,0,357,547),1479=>array(173,-217,466,-22),1488=>array(91,0,578,547),1489=>array(43,0,535,547),1490=>array(43,-5,383,547),1491=>array(43,0,511,547),1492=>array(91,0,563,547),1493=>array(91,0,182,547),1494=>array(43,0,303,547),1495=>array(91,0,563,547),1496=>array(90,-14,593,552),1497=>array(66,204,157,547),1498=>array(43,-208,446,547),1499=>array(43,0,474,547),1500=>array(43,0,492,729),1501=>array(91,0,573,547),1502=>array(43,0,588,555),1503=>array(91,-208,182,547),1504=>array(43,0,309,547),1505=>array(90,-14,593,547),1506=>array(43,-93,535,547),1507=>array(91,-208,549,547),1508=>array(91,0,569,547),1509=>array(43,-208,497,548),1510=>array(43,0,502,547),1511=>array(91,-208,633,546),1512=>array(43,0,474,547),1513=>array(43,0,666,547),1514=>array(10,-4,566,547),1520=>array(91,0,380,547),1521=>array(66,0,332,547),1522=>array(66,204,312,547),1523=>array(91,361,325,547),1524=>array(91,361,554,547),1542=>array(0,-20,607,892),1543=>array(0,-20,607,895),1545=>array(65,0,685,635),1546=>array(65,0,904,635),1548=>array(107,0,250,240),1557=>array(123,624,377,868),1563=>array(107,0,250,633),1567=>array(72,0,461,742),1569=>array(80,42,390,483),1570=>array(-37,0,315,939),1571=>array(53,0,220,999),1572=>array(-42,-244,406,588),1573=>array(53,-244,220,760),1574=>array(63,-131,719,588),1575=>array(94,0,184,760),1576=>array(63,-171,865,327),1577=>array(68,-28,453,513),1578=>array(63,-10,865,391),1579=>array(63,-10,865,513),1580=>array(77,-244,645,425),1581=>array(77,-244,645,425),1582=>array(77,-244,645,586),1583=>array(61,-19,388,415),1584=>array(61,-19,388,586),1585=>array(-42,-244,423,269),1586=>array(-42,-244,423,464),1587=>array(63,-244,1138,366),1588=>array(63,-244,1138,586),1589=>array(63,-244,1134,362),1590=>array(63,-244,1134,464),1591=>array(70,0,857,760),1592=>array(70,0,857,760),1593=>array(57,-244,587,521),1594=>array(57,-244,587,659),1600=>array(-10,0,303,90),1601=>array(63,-45,952,635),1602=>array(52,-215,701,635),1603=>array(70,-27,722,760),1604=>array(70,-152,637,760),1605=>array(68,-240,546,369),1606=>array(72,-162,660,464),1607=>array(68,-28,453,358),1608=>array(-42,-244,406,315),1609=>array(63,-131,719,411),1610=>array(63,-244,719,411),1611=>array(107,591,393,825),1612=>array(107,591,393,874),1613=>array(107,-239,393,-5),1614=>array(107,591,393,708),1615=>array(107,590,393,874),1616=>array(107,-137,393,-20),1617=>array(98,599,402,869),1618=>array(115,610,383,878),1619=>array(74,590,426,719),1620=>array(164,593,331,808),1621=>array(164,-244,331,-29),1623=>array(107,615,393,898),1626=>array(119,616,381,775),1632=>array(215,220,322,342),1633=>array(136,0,342,635),1634=>array(40,0,492,635),1635=>array(37,0,509,635),1636=>array(85,-10,457,641),1637=>array(66,-10,471,643),1638=>array(42,0,493,635),1639=>array(29,0,508,635),1640=>array(29,0,508,635),1641=>array(49,0,493,640),1642=>array(65,0,472,635),1643=>array(0,-110,300,318),1644=>array(87,499,230,729),1645=>array(42,101,502,537),1646=>array(63,-10,865,327),1647=>array(52,-215,701,481),1648=>array(223,602,277,887),1652=>array(60,649,227,864),1657=>array(63,-10,865,575),1658=>array(63,-10,865,513),1659=>array(63,-244,865,327),1660=>array(63,-180,865,391),1661=>array(63,-10,865,464),1662=>array(63,-244,865,327),1663=>array(63,-10,865,513),1664=>array(63,-244,865,327),1665=>array(77,-244,645,710),1666=>array(77,-244,645,708),1667=>array(77,-244,645,425),1668=>array(77,-244,645,425),1669=>array(77,-244,645,708),1670=>array(77,-244,645,425),1671=>array(77,-244,645,425),1672=>array(61,-19,388,746),1673=>array(61,-180,388,415),1674=>array(61,-171,388,415),1675=>array(61,-171,388,746),1676=>array(61,-19,388,586),1677=>array(61,-146,388,415),1678=>array(61,-19,388,708),1679=>array(61,-19,388,684),1680=>array(61,-19,388,708),1681=>array(-42,-244,469,648),1682=>array(-42,-244,473,556),1683=>array(-42,-244,507,269),1684=>array(-42,-244,474,269),1685=>array(-42,-244,634,269),1686=>array(-42,-244,474,269),1687=>array(-42,-244,439,464),1688=>array(-42,-244,439,586),1689=>array(-42,-244,439,586),1690=>array(63,-244,1138,464),1691=>array(63,-244,1138,366),1692=>array(63,-244,1138,586),1693=>array(63,-244,1134,362),1694=>array(63,-244,1134,586),1695=>array(70,0,857,760),1696=>array(57,-244,587,781),1697=>array(63,-45,952,481),1698=>array(63,-171,952,481),1699=>array(63,-171,952,635),1700=>array(63,-45,952,757),1701=>array(63,-293,952,481),1702=>array(63,-45,952,757),1703=>array(52,-215,701,635),1704=>array(52,-215,701,757),1705=>array(63,-43,895,760),1706=>array(63,-43,1000,760),1707=>array(63,-43,895,760),1708=>array(70,-27,722,760),1709=>array(70,-27,722,854),1710=>array(70,-293,722,760),1711=>array(63,-43,895,896),1712=>array(63,-43,895,896),1713=>array(63,-43,895,903),1714=>array(63,-171,895,896),1715=>array(63,-293,895,896),1716=>array(63,-43,895,1025),1717=>array(70,-152,723,971),1718=>array(70,-152,637,952),1719=>array(70,-152,684,1025),1720=>array(70,-391,637,760),1721=>array(72,-317,660,464),1722=>array(72,-162,660,366),1723=>array(72,-162,660,636),1724=>array(72,-330,660,464),1725=>array(72,-162,660,586),1726=>array(70,-33,638,487),1727=>array(77,-244,645,586),1734=>array(-42,-244,406,556),1740=>array(63,-131,719,411),1742=>array(63,-131,719,556),1749=>array(68,-28,453,358),1776=>array(215,220,322,342),1777=>array(136,0,342,635),1778=>array(40,0,492,635),1779=>array(37,0,509,635),1780=>array(40,0,471,643),1781=>array(52,-5,485,643),1782=>array(102,0,445,640),1783=>array(29,0,508,635),1784=>array(29,0,508,635),1785=>array(49,0,493,640),1984=>array(66,-14,570,742),1985=>array(110,0,544,729),1986=>array(110,0,530,729),1987=>array(110,0,530,729),1988=>array(110,0,530,729),1989=>array(110,0,530,729),1990=>array(110,0,530,729),1991=>array(104,0,532,729),1992=>array(104,0,532,729),1993=>array(77,0,560,741),1994=>array(94,0,184,729),1995=>array(55,-14,516,447),1996=>array(30,0,394,731),1997=>array(30,0,562,430),1998=>array(91,0,563,430),1999=>array(91,0,563,430),2000=>array(55,0,539,735),2001=>array(91,0,563,581),2002=>array(55,0,738,741),2003=>array(94,0,408,729),2004=>array(30,0,344,729),2005=>array(91,0,504,729),2006=>array(94,0,518,729),2007=>array(30,0,256,729),2008=>array(94,0,865,513),2009=>array(30,0,443,729),2010=>array(30,0,754,729),2011=>array(91,0,563,430),2012=>array(30,0,595,729),2013=>array(94,0,679,729),2014=>array(94,0,436,729),2015=>array(55,0,630,729),2016=>array(30,0,443,729),2017=>array(30,0,595,729),2018=>array(55,0,539,729),2019=>array(94,0,436,729),2020=>array(94,0,436,612),2021=>array(94,0,428,729),2022=>array(55,0,539,729),2023=>array(55,0,539,729),2027=>array(106,673,398,745),2028=>array(32,609,468,800),2029=>array(205,658,305,758),2030=>array(93,616,405,800),2031=>array(44,616,456,800),2032=>array(32,609,468,800),2033=>array(44,616,456,800),2034=>array(200,-184,300,-84),2035=>array(104,659,394,758),2036=>array(98,557,216,760),2037=>array(98,557,216,760),2040=>array(49,0,511,498),2041=>array(49,0,511,483),2042=>array(-10,0,371,72),3647=>array(86,-138,571,769),3713=>array(63,-10,607,560),3714=>array(68,-17,691,568),3716=>array(67,-10,619,568),3719=>array(53,-238,415,568),3720=>array(62,-0,574,575),3722=>array(68,-234,690,568),3725=>array(56,-8,619,573),3732=>array(91,-14,592,560),3733=>array(63,-15,564,579),3734=>array(0,-240,587,560),3735=>array(42,-8,599,571),3737=>array(46,-14,593,568),3738=>array(36,-8,556,561),3739=>array(36,-8,556,760),3740=>array(43,-8,725,614),3741=>array(91,-14,676,760),3742=>array(51,-8,636,561),3743=>array(51,-8,636,760),3745=>array(31,-14,636,547),3746=>array(56,-8,619,760),3747=>array(68,-8,634,568),3749=>array(39,-8,583,568),3751=>array(56,-13,558,560),3754=>array(39,-8,688,679),3755=>array(62,-12,762,575),3757=>array(56,-14,558,560),3758=>array(68,-8,684,605),3759=>array(99,-166,742,579),3760=>array(54,-13,589,563),3761=>array(-578,639,-43,880),3762=>array(60,0,473,560),3763=>array(-425,0,473,806),3764=>array(-594,615,-73,926),3765=>array(-594,615,0,926),3766=>array(-594,615,-73,926),3767=>array(-594,615,0,926),3768=>array(-376,-350,-161,-38),3769=>array(-418,-306,-152,-40),3771=>array(-578,639,-43,880),3772=>array(-611,-278,6,-39),3773=>array(63,-240,619,715),3776=>array(60,-14,324,560),3777=>array(60,-14,598,560),3778=>array(-22,-5,398,896),3779=>array(45,-14,490,892),3780=>array(92,-11,445,886),3782=>array(72,-232,574,557),3784=>array(-366,618,-278,792),3785=>array(-563,609,-45,891),3786=>array(-595,598,22,869),3787=>array(-462,609,-182,890),3788=>array(-611,636,6,875),3789=>array(-425,620,-220,806),3792=>array(66,-14,570,547),3793=>array(48,-75,582,576),3794=>array(48,-66,545,711),3795=>array(11,-9,692,830),3796=>array(48,-83,601,711),3797=>array(48,-83,601,711),3798=>array(43,-8,744,812),3799=>array(63,-240,607,560),3800=>array(73,-210,680,557),3801=>array(51,-4,621,571),3804=>array(62,-12,947,575),3805=>array(62,-12,973,575),4256=>array(59,-15,815,828),4257=>array(54,-0,704,828),4258=>array(54,-148,649,837),4259=>array(54,-15,781,828),4260=>array(49,0,552,837),4261=>array(39,0,714,837),4262=>array(29,-15,695,828),4263=>array(59,-15,885,837),4264=>array(29,0,390,874),4265=>array(59,0,561,828),4266=>array(29,-15,784,828),4267=>array(59,-15,824,828),4268=>array(63,0,566,828),4269=>array(49,-167,806,837),4270=>array(24,-15,717,837),4271=>array(39,0,566,828),4272=>array(54,-15,853,828),4273=>array(63,-15,567,828),4274=>array(63,-0,566,837),4275=>array(49,-182,806,837),4276=>array(49,0,817,834),4277=>array(44,0,680,828),4278=>array(64,-15,566,837),4279=>array(54,0,557,828),4280=>array(59,-15,562,828),4281=>array(63,0,566,828),4282=>array(59,-15,764,837),4283=>array(59,-15,810,828),4284=>array(63,-0,566,828),4285=>array(49,-15,574,837),4286=>array(63,-0,566,828),4287=>array(29,0,695,828),4288=>array(29,-15,785,828),4289=>array(63,0,566,828),4290=>array(54,-15,635,837),4291=>array(29,0,532,828),4292=>array(54,0,540,828),4293=>array(39,-15,699,837),4304=>array(49,-15,459,592),4305=>array(49,-14,469,837),4306=>array(44,-235,537,551),4307=>array(49,-230,759,547),4308=>array(49,-236,449,547),4309=>array(49,-236,459,547),4310=>array(20,-14,452,838),4311=>array(49,-14,752,547),4312=>array(49,0,469,547),4313=>array(44,-236,456,542),4314=>array(49,-230,1016,552),4315=>array(49,-15,459,837),4316=>array(63,-15,474,833),4317=>array(49,-0,737,547),4318=>array(49,-15,459,833),4319=>array(49,-236,458,551),4320=>array(49,0,747,833),4321=>array(63,-15,474,827),4322=>array(44,-236,610,680),4323=>array(5,-236,464,571),4324=>array(49,-236,766,547),4325=>array(49,-236,449,828),4326=>array(49,-230,737,546),4327=>array(49,-236,459,538),4328=>array(29,-15,454,837),4329=>array(63,0,474,837),4330=>array(44,-236,527,532),4331=>array(49,-14,458,828),4332=>array(64,-15,488,837),4333=>array(49,-236,471,827),4334=>array(63,-15,474,827),4335=>array(10,-235,444,572),4336=>array(49,-15,459,837),4337=>array(59,-15,469,837),4338=>array(49,-141,458,547),4339=>array(49,-236,459,546),4340=>array(49,-236,458,837),4341=>array(49,-15,515,837),4342=>array(49,-236,778,547),4343=>array(44,-236,508,547),4344=>array(49,-236,459,538),4345=>array(39,-236,532,551),4346=>array(49,-77,459,547),4347=>array(54,-10,394,484),4348=>array(49,420,270,837),5121=>array(8,1,676,730),5122=>array(8,0,676,1037),5123=>array(8,0,676,729),5124=>array(8,0,676,914),5125=>array(98,0,711,729),5126=>array(98,0,711,914),5127=>array(98,0,711,913),5129=>array(98,0,711,729),5130=>array(58,0,671,729),5131=>array(58,0,671,914),5132=>array(98,1,827,730),5133=>array(8,1,776,730),5134=>array(98,0,827,729),5135=>array(8,0,776,729),5136=>array(98,0,827,914),5137=>array(8,0,776,914),5138=>array(98,0,909,729),5139=>array(98,0,909,729),5140=>array(98,0,909,914),5141=>array(98,0,909,914),5142=>array(98,0,711,914),5143=>array(98,0,869,729),5144=>array(58,0,909,729),5145=>array(98,0,869,914),5146=>array(58,0,909,914),5147=>array(58,0,671,914),5149=>array(98,629,198,729),5150=>array(67,326,488,734),5151=>array(46,356,362,714),5152=>array(46,356,362,714),5153=>array(67,398,334,674),5154=>array(67,391,334,667),5155=>array(67,398,338,667),5156=>array(67,398,334,667),5157=>array(35,327,405,733),5158=>array(67,326,331,734),5159=>array(98,312,198,412),5160=>array(67,503,334,563),5161=>array(67,399,334,667),5162=>array(67,399,334,691),5163=>array(8,1,1028,730),5164=>array(8,0,847,729),5165=>array(98,0,892,729),5166=>array(58,0,1055,729),5167=>array(8,0,676,729),5168=>array(8,0,676,1037),5169=>array(8,0,676,729),5170=>array(8,0,676,914),5171=>array(58,0,671,729),5172=>array(58,0,671,914),5173=>array(58,0,671,913),5175=>array(58,0,671,729),5176=>array(58,0,671,729),5177=>array(58,0,671,914),5178=>array(98,0,827,729),5179=>array(8,0,776,729),5180=>array(98,0,827,729),5181=>array(8,0,776,729),5182=>array(98,0,827,914),5183=>array(8,0,776,914),5184=>array(98,0,869,729),5185=>array(58,0,909,729),5186=>array(98,0,869,914),5187=>array(58,0,909,914),5188=>array(98,0,869,729),5189=>array(58,0,909,729),5190=>array(98,0,869,914),5191=>array(58,0,909,914),5192=>array(58,0,671,913),5193=>array(67,326,453,734),5194=>array(67,326,137,734),5196=>array(87,-14,645,729),5197=>array(87,0,645,1037),5198=>array(87,0,645,743),5199=>array(87,0,645,914),5200=>array(58,0,671,729),5201=>array(58,0,671,914),5202=>array(58,0,671,913),5204=>array(58,0,671,729),5205=>array(59,0,672,729),5206=>array(59,0,672,914),5207=>array(98,-14,834,729),5208=>array(87,-14,831,729),5209=>array(98,0,834,743),5210=>array(87,0,831,743),5211=>array(98,0,834,914),5212=>array(87,0,831,914),5213=>array(98,0,869,729),5214=>array(58,0,842,729),5215=>array(98,0,869,914),5216=>array(58,0,842,914),5217=>array(98,0,889,729),5218=>array(59,0,842,729),5219=>array(98,0,889,914),5220=>array(59,0,842,914),5221=>array(117,0,889,729),5222=>array(67,326,379,734),5223=>array(87,-14,823,734),5224=>array(87,0,823,743),5225=>array(58,0,811,734),5226=>array(59,0,835,734),5227=>array(34,0,530,743),5228=>array(98,0,594,1037),5229=>array(98,0,594,743),5230=>array(98,0,594,914),5231=>array(34,-14,530,729),5232=>array(34,-14,530,914),5233=>array(34,-14,623,913),5234=>array(98,-14,594,729),5235=>array(98,-14,594,914),5236=>array(98,0,762,743),5237=>array(34,0,712,743),5238=>array(98,0,781,743),5239=>array(98,0,758,743),5240=>array(98,0,781,914),5241=>array(98,0,758,914),5242=>array(98,-14,762,729),5243=>array(34,-14,712,729),5244=>array(98,-14,762,914),5245=>array(34,-14,712,914),5246=>array(98,-14,781,729),5247=>array(98,-14,758,729),5248=>array(98,-14,781,914),5249=>array(98,-14,758,914),5250=>array(117,-14,781,729),5251=>array(67,318,379,734),5252=>array(27,318,340,734),5253=>array(34,0,696,743),5254=>array(98,0,720,743),5255=>array(34,-14,696,734),5256=>array(98,-14,720,734),5257=>array(34,0,530,743),5258=>array(98,0,594,1037),5259=>array(98,0,594,743),5260=>array(98,0,594,914),5261=>array(34,-14,530,729),5262=>array(34,-14,530,914),5263=>array(34,-14,623,913),5264=>array(98,-14,594,729),5265=>array(98,-14,594,914),5266=>array(98,0,762,743),5267=>array(34,0,712,743),5268=>array(98,0,781,743),5269=>array(98,0,758,743),5270=>array(98,0,781,914),5271=>array(98,0,758,914),5272=>array(98,-14,762,729),5273=>array(34,-14,712,729),5274=>array(98,-14,762,914),5275=>array(34,-14,712,914),5276=>array(98,-14,781,729),5277=>array(98,-14,758,729),5278=>array(98,-14,781,914),5279=>array(98,-14,758,914),5280=>array(117,-14,781,729),5281=>array(67,318,379,734),5282=>array(67,318,379,734),5283=>array(58,0,512,729),5284=>array(98,0,552,1037),5285=>array(98,0,552,729),5286=>array(98,0,552,914),5287=>array(58,0,512,729),5288=>array(58,0,512,914),5289=>array(58,0,607,913),5290=>array(98,0,552,729),5291=>array(98,0,552,914),5292=>array(98,0,651,729),5293=>array(58,0,710,729),5294=>array(98,0,741,729),5295=>array(98,0,706,729),5296=>array(98,0,741,914),5297=>array(98,0,706,914),5298=>array(98,0,651,729),5299=>array(58,0,710,729),5300=>array(98,0,651,914),5301=>array(58,0,710,914),5302=>array(98,0,741,729),5303=>array(98,0,706,729),5304=>array(98,0,741,914),5305=>array(98,0,706,914),5306=>array(117,0,741,729),5307=>array(67,326,331,734),5308=>array(67,326,453,734),5309=>array(67,326,331,734),5312=>array(58,-14,817,436),5313=>array(34,-14,793,755),5314=>array(34,-14,793,436),5315=>array(5,-14,765,636),5316=>array(58,0,817,450),5317=>array(58,0,817,636),5318=>array(58,0,817,635),5319=>array(34,0,793,450),5320=>array(34,0,793,636),5321=>array(98,-14,1035,436),5322=>array(58,-14,977,436),5323=>array(98,0,1025,450),5324=>array(34,0,793,450),5325=>array(98,0,1025,636),5326=>array(34,0,793,636),5327=>array(34,0,793,635),5328=>array(67,484,545,736),5329=>array(67,318,397,734),5330=>array(67,484,545,736),5331=>array(58,0,817,450),5332=>array(34,0,793,755),5333=>array(34,0,793,450),5334=>array(34,0,793,636),5335=>array(58,0,817,450),5336=>array(58,0,817,636),5337=>array(58,0,817,635),5338=>array(34,0,793,450),5339=>array(34,0,793,636),5340=>array(98,0,1035,450),5341=>array(58,0,977,450),5342=>array(98,0,1025,450),5343=>array(34,0,972,450),5344=>array(98,0,1025,636),5345=>array(34,0,972,636),5346=>array(98,0,1035,450),5347=>array(58,0,977,450),5348=>array(98,0,1035,636),5349=>array(58,0,977,636),5350=>array(98,0,1025,450),5351=>array(34,0,972,450),5352=>array(98,0,1025,636),5353=>array(34,0,972,636),5354=>array(67,484,545,736),5356=>array(58,0,671,729),5357=>array(34,0,505,729),5358=>array(98,0,649,1037),5359=>array(98,0,569,729),5360=>array(98,0,569,914),5361=>array(34,0,505,729),5362=>array(34,0,505,914),5363=>array(34,0,600,913),5364=>array(98,0,569,729),5365=>array(98,0,569,914),5366=>array(98,0,736,729),5367=>array(34,0,696,729),5368=>array(98,0,758,729),5369=>array(98,0,713,729),5370=>array(98,0,758,914),5371=>array(98,0,713,914),5372=>array(98,0,736,729),5373=>array(34,0,696,729),5374=>array(98,0,736,914),5375=>array(34,0,696,914),5376=>array(98,0,758,729),5377=>array(98,0,713,729),5378=>array(98,0,758,914),5379=>array(98,0,713,914),5380=>array(117,0,758,729),5381=>array(67,326,363,734),5382=>array(67,318,365,741),5383=>array(67,326,363,734),5392=>array(34,-14,678,743),5393=>array(34,-14,678,743),5394=>array(34,-14,678,914),5395=>array(34,-14,857,464),5396=>array(34,-14,857,636),5397=>array(34,-14,857,464),5398=>array(34,-14,857,636),5399=>array(98,-14,875,743),5400=>array(34,-14,814,743),5401=>array(98,-14,875,743),5402=>array(34,-14,814,743),5403=>array(98,-14,875,914),5404=>array(34,-14,814,914),5405=>array(98,-14,1106,464),5406=>array(34,-14,1042,464),5407=>array(98,-14,1106,636),5408=>array(34,-14,1042,636),5409=>array(98,-14,1106,464),5410=>array(34,-14,1042,464),5411=>array(98,-14,1106,636),5412=>array(34,-14,1042,636),5413=>array(67,476,585,737),5414=>array(58,0,529,729),5415=>array(98,0,569,1037),5416=>array(98,0,569,729),5417=>array(98,0,569,914),5418=>array(58,0,529,729),5419=>array(58,0,531,914),5420=>array(58,0,626,913),5421=>array(98,0,569,729),5422=>array(98,0,569,914),5423=>array(98,0,746,729),5424=>array(58,0,723,729),5425=>array(98,0,758,729),5426=>array(98,0,760,729),5427=>array(98,0,758,914),5428=>array(98,0,760,914),5429=>array(98,0,746,729),5430=>array(58,0,723,729),5431=>array(98,0,749,914),5432=>array(58,0,723,914),5433=>array(98,0,758,729),5434=>array(98,0,760,729),5435=>array(98,0,758,914),5436=>array(98,0,760,914),5437=>array(117,0,758,729),5438=>array(67,326,363,734),5440=>array(67,399,334,667),5441=>array(67,326,429,734),5442=>array(98,-14,857,436),5443=>array(58,-14,817,436),5444=>array(58,0,817,450),5445=>array(98,0,857,755),5446=>array(98,0,857,450),5447=>array(98,0,857,636),5448=>array(98,0,569,729),5449=>array(98,0,569,914),5450=>array(98,0,569,729),5451=>array(34,0,505,729),5452=>array(34,0,505,914),5453=>array(34,0,505,729),5454=>array(98,0,736,914),5455=>array(34,0,696,914),5456=>array(67,326,363,734),5458=>array(58,0,671,729),5459=>array(73,0,676,744),5460=>array(73,-15,676,1037),5461=>array(73,-15,676,729),5462=>array(73,-15,676,914),5463=>array(38,0,668,662),5464=>array(38,0,668,914),5465=>array(58,0,688,662),5466=>array(58,0,688,914),5467=>array(98,0,886,914),5468=>array(58,0,909,914),5469=>array(67,326,462,695),5470=>array(87,-14,645,743),5471=>array(87,-14,645,743),5472=>array(87,-14,645,743),5473=>array(87,-14,645,743),5474=>array(87,-14,645,914),5475=>array(87,-14,645,914),5476=>array(41,0,671,729),5477=>array(41,0,671,914),5478=>array(59,0,689,729),5479=>array(59,0,689,914),5480=>array(98,0,907,914),5481=>array(59,0,842,914),5482=>array(67,326,467,734),5492=>array(34,0,772,743),5493=>array(58,0,796,743),5494=>array(58,0,796,914),5495=>array(34,-14,772,729),5496=>array(34,-14,772,914),5497=>array(58,-14,796,729),5498=>array(58,-14,796,914),5499=>array(67,318,508,734),5500=>array(98,0,654,729),5501=>array(67,326,429,734),5502=>array(67,0,1013,1037),5503=>array(67,0,1013,743),5504=>array(67,0,1013,914),5505=>array(67,-14,949,734),5506=>array(67,-14,949,914),5507=>array(67,-14,1013,734),5508=>array(67,-14,1013,914),5509=>array(67,318,798,734),5514=>array(34,0,772,743),5515=>array(58,0,796,743),5516=>array(34,-14,772,729),5517=>array(58,-14,796,729),5518=>array(67,0,1225,1037),5519=>array(67,0,1225,743),5520=>array(67,0,1225,914),5521=>array(67,-14,904,736),5522=>array(67,-14,904,914),5523=>array(67,-14,1225,736),5524=>array(67,-14,1225,914),5525=>array(67,332,645,736),5526=>array(67,332,1018,736),5536=>array(34,0,793,692),5537=>array(34,0,793,692),5538=>array(58,-242,817,450),5539=>array(58,-242,817,636),5540=>array(34,-242,793,450),5541=>array(34,-242,793,636),5542=>array(67,338,545,736),5543=>array(58,0,627,729),5544=>array(16,0,585,729),5545=>array(16,0,585,914),5546=>array(58,0,627,729),5547=>array(58,0,627,914),5548=>array(16,0,585,729),5549=>array(16,0,585,914),5550=>array(5,326,363,734),5551=>array(98,-14,594,729),5598=>array(98,0,711,729),5601=>array(56,0,669,729),5702=>array(67,326,413,734),5703=>array(67,240,413,820),5742=>array(57,0,391,306),5743=>array(67,0,949,743),5744=>array(67,0,1211,743),5745=>array(67,0,1598,743),5746=>array(67,0,1598,914),5747=>array(67,-14,1277,736),5748=>array(67,-14,1277,914),5749=>array(67,-14,1598,736),5750=>array(67,-14,1598,914),5760=>array(-10,246,487,328),5761=>array(-10,-125,502,328),5762=>array(-10,-125,722,328),5763=>array(-10,-125,941,328),5764=>array(-10,-125,1160,328),5765=>array(-10,-125,1379,328),5766=>array(-10,246,502,697),5767=>array(-10,246,722,697),5768=>array(-10,246,941,697),5769=>array(-10,246,1160,697),5770=>array(-10,246,1379,697),5771=>array(-10,-125,508,697),5772=>array(-10,-125,728,697),5773=>array(-10,-125,948,697),5774=>array(-10,-125,1168,697),5775=>array(-10,-125,1389,697),5776=>array(-10,41,502,533),5777=>array(-10,41,722,533),5778=>array(-10,41,939,533),5779=>array(-10,41,1159,533),5780=>array(-10,41,1379,533),5781=>array(-10,-125,508,697),5782=>array(-10,-125,762,697),5783=>array(-10,-83,798,328),5784=>array(-10,-240,1214,328),5785=>array(-10,246,1160,902),5786=>array(-10,82,693,328),5787=>array(55,28,517,544),5788=>array(-10,28,452,544),7424=>array(30,0,562,547),7425=>array(5,0,669,547),7426=>array(60,-14,929,560),7427=>array(30,0,530,547),7428=>array(55,-14,488,560),7429=>array(91,0,550,547),7430=>array(18,0,550,547),7431=>array(91,0,443,547),7432=>array(63,-14,471,561),7433=>array(94,-213,184,547),7434=>array(0,-14,310,547),7435=>array(91,0,576,547),7436=>array(1,0,498,560),7437=>array(91,0,664,547),7438=>array(91,0,559,547),7439=>array(55,-14,557,560),7440=>array(62,-14,495,560),7441=>array(55,22,629,524),7442=>array(55,57,629,489),7443=>array(25,2,663,543),7444=>array(55,-14,970,560),7446=>array(55,273,557,560),7447=>array(55,-14,557,273),7448=>array(74,0,475,547),7449=>array(24,0,507,547),7450=>array(24,0,507,547),7451=>array(29,0,553,547),7452=>array(91,-16,510,547),7453=>array(85,37,646,495),7454=>array(85,38,857,496),7455=>array(23,-238,583,560),7456=>array(30,0,562,547),7457=>array(42,0,776,547),7458=>array(43,0,482,547),7459=>array(59,-14,466,547),7462=>array(87,0,498,560),7463=>array(30,0,562,547),7464=>array(74,0,490,547),7465=>array(74,0,475,547),7466=>array(44,0,546,547),7467=>array(37,0,556,547),7468=>array(5,326,426,734),7469=>array(2,326,573,734),7470=>array(62,326,388,734),7472=>array(62,326,448,734),7473=>array(62,326,358,734),7474=>array(41,326,336,734),7475=>array(35,318,437,742),7476=>array(62,326,412,734),7477=>array(62,326,124,734),7478=>array(-33,214,124,734),7479=>array(62,326,426,734),7480=>array(62,326,348,734),7481=>array(62,326,482,734),7482=>array(62,326,410,734),7483=>array(62,326,410,734),7484=>array(35,318,460,742),7485=>array(35,318,405,742),7486=>array(62,326,358,734),7487=>array(62,326,419,734),7488=>array(-2,326,387,734),7489=>array(55,318,406,734),7490=>array(21,326,603,734),7491=>array(38,318,329,640),7492=>array(38,318,329,640),7493=>array(35,318,343,640),7494=>array(38,318,585,640),7495=>array(57,318,365,751),7496=>array(35,318,343,751),7497=>array(35,318,354,640),7498=>array(35,318,354,640),7499=>array(41,318,298,640),7500=>array(40,318,297,640),7501=>array(35,209,343,640),7502=>array(60,207,116,632),7503=>array(57,326,363,751),7504=>array(57,326,560,640),7505=>array(57,209,346,640),7506=>array(35,318,351,640),7507=>array(35,318,307,640),7508=>array(35,479,351,640),7509=>array(35,318,351,479),7510=>array(57,209,365,640),7511=>array(17,326,232,719),7512=>array(54,318,342,632),7513=>array(54,347,407,604),7514=>array(57,319,560,633),7515=>array(19,326,354,632),7517=>array(59,209,357,755),7518=>array(10,209,354,632),7519=>array(35,318,351,742),7520=>array(35,209,379,635),7521=>array(18,209,346,633),7522=>array(60,0,116,425),7523=>array(57,0,259,313),7524=>array(54,-8,342,306),7525=>array(19,0,354,306),7526=>array(59,-117,357,429),7527=>array(10,-117,354,306),7528=>array(59,-117,367,313),7529=>array(35,-117,379,309),7530=>array(18,-117,346,307),7543=>array(91,-208,580,560),7544=>array(62,326,412,734),7547=>array(57,0,314,547),7549=>array(24,-208,643,560),7557=>array(71,-208,273,760),7579=>array(35,318,343,640),7580=>array(35,318,307,640),7581=>array(35,287,307,640),7582=>array(35,318,351,751),7583=>array(41,318,298,640),7584=>array(15,326,234,751),7585=>array(-11,209,170,632),7586=>array(35,209,343,632),7587=>array(54,209,342,632),7588=>array(36,326,198,751),7589=>array(60,326,187,632),7590=>array(36,326,198,632),7591=>array(36,326,198,632),7592=>array(-83,209,172,751),7593=>array(60,209,187,751),7594=>array(44,209,172,751),7595=>array(55,326,314,640),7596=>array(57,209,560,640),7597=>array(57,209,560,633),7598=>array(-11,209,348,640),7599=>array(57,209,417,640),7600=>array(55,326,346,640),7601=>array(35,318,351,640),7602=>array(35,210,351,751),7603=>array(34,209,297,640),7604=>array(-11,209,224,751),7605=>array(17,209,232,719),7606=>array(46,318,445,632),7607=>array(35,318,355,632),7608=>array(57,317,321,632),7609=>array(60,326,343,632),7610=>array(19,326,354,632),7611=>array(27,326,304,632),7612=>array(27,209,374,632),7613=>array(27,296,304,632),7614=>array(27,207,330,632),7615=>array(35,320,351,756),7620=>array(-456,616,-44,800),7621=>array(-456,616,-44,800),7622=>array(-456,616,-44,800),7623=>array(-456,616,-44,800),7624=>array(-468,616,-32,800),7625=>array(-468,616,-32,800),7680=>array(8,-241,676,729),7681=>array(60,-241,522,560),7682=>array(98,0,615,914),7683=>array(90,-14,580,915),7684=>array(98,-183,615,729),7685=>array(91,-183,580,760),7686=>array(98,-156,615,729),7687=>array(91,-156,580,760),7688=>array(56,-193,644,928),7689=>array(55,-193,488,800),7690=>array(98,0,711,914),7691=>array(55,-14,544,942),7692=>array(98,-183,711,729),7693=>array(55,-183,544,760),7694=>array(98,-156,711,729),7695=>array(55,-156,544,760),7696=>array(98,-192,711,729),7697=>array(55,-193,544,760),7698=>array(98,-240,711,729),7699=>array(55,-240,544,760),7700=>array(98,0,568,1044),7701=>array(55,-14,562,921),7702=>array(98,0,568,1044),7703=>array(55,-14,562,921),7704=>array(98,-213,568,729),7705=>array(55,-213,562,560),7706=>array(98,-192,568,729),7707=>array(55,-192,562,560),7708=>array(98,-193,568,928),7709=>array(55,-193,562,785),7710=>array(98,0,517,914),7711=>array(23,0,371,942),7712=>array(56,-14,693,887),7713=>array(55,-208,544,745),7714=>array(98,0,654,913),7715=>array(90,0,549,915),7716=>array(98,-183,654,729),7717=>array(91,-183,549,760),7718=>array(98,0,654,914),7719=>array(-9,0,549,913),7720=>array(8,-193,654,729),7721=>array(1,-193,549,760),7722=>array(98,-222,654,729),7723=>array(91,-222,549,760),7724=>array(0,-192,322,729),7725=>array(-22,-192,300,760),7726=>array(3,0,293,1044),7727=>array(-6,0,284,886),7728=>array(98,0,677,928),7729=>array(91,0,576,928),7730=>array(98,-183,677,729),7731=>array(91,-183,576,760),7732=>array(98,-156,677,729),7733=>array(91,-156,576,760),7734=>array(98,-183,552,729),7735=>array(98,-183,189,760),7736=>array(1,-183,552,927),7737=>array(-1,-183,291,899),7738=>array(98,-156,552,729),7739=>array(-6,-156,286,760),7740=>array(98,-240,552,729),7741=>array(-17,-240,295,760),7742=>array(98,0,765,928),7743=>array(91,0,889,800),7744=>array(98,0,765,914),7745=>array(91,0,889,760),7746=>array(98,-183,765,729),7747=>array(91,-183,889,560),7748=>array(98,0,650,914),7749=>array(91,0,549,760),7750=>array(98,-183,650,729),7751=>array(91,-183,549,560),7752=>array(98,-156,650,729),7753=>array(91,-156,549,560),7754=>array(98,-240,650,729),7755=>array(91,-240,549,560),7756=>array(56,-14,731,1044),7757=>array(55,-14,557,881),7758=>array(56,-14,731,1042),7759=>array(55,-14,557,882),7760=>array(56,-14,731,1044),7761=>array(55,-14,557,921),7762=>array(56,-14,731,1044),7763=>array(55,-14,557,921),7764=>array(98,0,569,928),7765=>array(91,-208,580,800),7766=>array(98,0,569,914),7767=>array(91,-208,580,760),7768=>array(98,0,666,913),7769=>array(91,0,411,760),7770=>array(98,-183,666,729),7771=>array(91,-183,411,560),7772=>array(98,-183,666,899),7773=>array(91,-183,411,745),7774=>array(98,-156,666,729),7775=>array(41,-156,411,560),7776=>array(66,-14,579,914),7777=>array(54,-14,472,760),7778=>array(66,-183,579,742),7779=>array(54,-183,472,560),7780=>array(66,-14,579,928),7781=>array(54,-14,485,800),7782=>array(66,-14,579,1042),7783=>array(54,-14,472,973),7784=>array(66,-183,579,914),7785=>array(54,-183,472,733),7786=>array(-3,0,614,914),7787=>array(27,0,368,942),7788=>array(-3,-183,614,729),7789=>array(27,-183,368,702),7790=>array(-3,-156,614,729),7791=>array(27,-156,390,702),7792=>array(-3,-240,614,729),7793=>array(27,-240,394,702),7794=>array(87,-183,645,729),7795=>array(85,-183,543,560),7796=>array(87,-192,645,729),7797=>array(85,-192,543,560),7798=>array(87,-213,645,729),7799=>array(85,-213,543,560),7800=>array(87,-14,645,1044),7801=>array(85,-14,543,990),7802=>array(87,-14,645,1025),7803=>array(85,-14,543,869),7804=>array(8,0,676,936),7805=>array(30,0,562,777),7806=>array(8,-183,676,729),7807=>array(30,-183,562,547),7808=>array(33,0,956,931),7809=>array(42,0,776,802),7810=>array(33,0,956,931),7811=>array(42,0,776,803),7812=>array(33,0,956,913),7813=>array(42,0,776,758),7814=>array(33,0,956,913),7815=>array(42,0,776,760),7816=>array(33,-183,956,729),7817=>array(42,-183,776,547),7818=>array(30,0,654,914),7819=>array(29,0,559,760),7820=>array(30,0,654,913),7821=>array(29,0,559,758),7822=>array(-2,0,613,914),7823=>array(30,-208,562,760),7824=>array(45,0,640,928),7825=>array(43,0,482,800),7826=>array(45,-183,640,729),7827=>array(43,-183,482,547),7828=>array(45,-156,640,729),7829=>array(43,-156,482,547),7830=>array(91,-156,549,760),7831=>array(2,0,368,913),7832=>array(42,0,776,878),7833=>array(30,-208,562,878),7834=>array(60,-14,672,760),7835=>array(23,0,371,942),7836=>array(1,0,371,760),7837=>array(23,0,371,760),7838=>array(87,-14,713,743),7839=>array(55,-14,557,742),7840=>array(8,-183,676,729),7841=>array(60,-183,522,560),7842=>array(8,0,676,992),7843=>array(60,-14,522,810),7844=>array(8,0,676,1028),7845=>array(60,-14,585,846),7846=>array(8,0,676,1028),7847=>array(60,-14,522,847),7848=>array(8,0,676,1044),7849=>array(60,-14,577,862),7850=>array(8,0,676,1057),7851=>array(60,-14,522,875),7852=>array(8,-183,676,928),7853=>array(60,-183,522,800),7854=>array(8,0,676,1044),7855=>array(60,-14,522,877),7856=>array(8,0,676,1044),7857=>array(60,-14,522,877),7858=>array(8,0,676,1068),7859=>array(60,-14,522,901),7860=>array(8,0,676,1043),7861=>array(60,-14,522,876),7862=>array(8,-183,676,946),7863=>array(60,-183,522,765),7864=>array(98,-183,568,729),7865=>array(55,-183,562,560),7866=>array(98,0,568,992),7867=>array(55,-14,562,810),7868=>array(98,0,568,921),7869=>array(55,-14,562,777),7870=>array(98,0,637,1028),7871=>array(55,-14,613,846),7872=>array(98,0,568,1028),7873=>array(55,-14,562,847),7874=>array(98,0,620,1044),7875=>array(55,-14,605,862),7876=>array(98,0,568,1057),7877=>array(55,-14,562,875),7878=>array(98,-183,568,928),7879=>array(55,-183,562,800),7880=>array(44,0,263,992),7881=>array(33,0,252,811),7882=>array(98,-183,197,729),7883=>array(93,-183,184,760),7884=>array(56,-183,731,742),7885=>array(55,-183,557,560),7886=>array(56,-14,731,992),7887=>array(55,-14,557,810),7888=>array(56,-14,731,1028),7889=>array(55,-14,601,846),7890=>array(56,-14,731,1028),7891=>array(55,-14,557,847),7892=>array(56,-14,731,1044),7893=>array(55,-14,592,862),7894=>array(56,-14,731,1057),7895=>array(55,-14,557,875),7896=>array(56,-183,731,928),7897=>array(55,-183,557,800),7898=>array(50,-14,764,927),7899=>array(58,-14,603,800),7900=>array(50,-14,764,927),7901=>array(58,-14,603,800),7902=>array(50,-14,764,992),7903=>array(58,-14,603,810),7904=>array(50,-14,764,921),7905=>array(58,-14,603,777),7906=>array(50,-183,764,760),7907=>array(58,-183,603,615),7908=>array(87,-183,645,729),7909=>array(85,-183,543,560),7910=>array(87,-14,645,992),7911=>array(85,-14,543,810),7912=>array(84,-4,796,927),7913=>array(86,-14,676,800),7914=>array(84,-4,796,927),7915=>array(86,-14,676,800),7916=>array(84,-4,796,992),7917=>array(86,-14,676,810),7918=>array(84,-4,796,921),7919=>array(86,-14,676,777),7920=>array(84,-183,796,760),7921=>array(86,-183,676,615),7922=>array(-2,0,613,931),7923=>array(30,-208,562,802),7924=>array(-2,-183,613,729),7925=>array(30,-208,562,547),7926=>array(-2,0,613,996),7927=>array(30,-208,562,813),7928=>array(-2,0,613,921),7929=>array(30,-208,562,777),7930=>array(98,0,764,729),7931=>array(16,0,462,760),7936=>array(55,-12,611,797),7937=>array(55,-12,611,797),7938=>array(55,-12,611,800),7939=>array(55,-12,611,800),7940=>array(55,-12,611,800),7941=>array(55,-12,611,800),7942=>array(55,-12,611,928),7943=>array(55,-12,611,928),7944=>array(8,0,676,797),7945=>array(8,0,676,797),7946=>array(2,0,869,800),7947=>array(3,0,869,800),7948=>array(3,0,761,800),7949=>array(2,0,793,800),7950=>array(3,0,700,928),7951=>array(2,0,734,928),7952=>array(65,-14,473,797),7953=>array(65,-14,473,797),7954=>array(65,-14,473,800),7955=>array(65,-14,473,800),7956=>array(65,-14,486,800),7957=>array(65,-14,501,800),7960=>array(3,0,647,797),7961=>array(3,0,647,797),7962=>array(2,0,902,800),7963=>array(3,0,911,800),7964=>array(3,0,834,800),7965=>array(2,0,864,800),7968=>array(91,-208,549,797),7969=>array(91,-208,549,797),7970=>array(91,-208,549,800),7971=>array(91,-208,549,800),7972=>array(91,-208,549,800),7973=>array(91,-208,549,800),7974=>array(91,-208,549,928),7975=>array(91,-208,549,928),7976=>array(3,0,739,797),7977=>array(3,0,737,797),7978=>array(2,0,988,800),7979=>array(3,0,991,800),7980=>array(3,0,929,800),7981=>array(2,0,953,800),7982=>array(3,0,835,928),7983=>array(2,0,849,928),7984=>array(76,0,304,797),7985=>array(71,0,304,797),7986=>array(-39,0,340,800),7987=>array(-34,0,347,800),7988=>array(2,0,362,800),7989=>array(-22,0,366,800),7990=>array(-26,0,304,928),7991=>array(-28,0,304,928),7992=>array(3,0,282,797),7993=>array(3,0,276,797),7994=>array(2,0,537,800),7995=>array(3,0,537,800),7996=>array(3,0,472,800),7997=>array(2,0,501,800),7998=>array(3,0,392,928),7999=>array(2,0,395,928),8000=>array(55,-14,557,797),8001=>array(55,-14,557,797),8002=>array(55,-14,557,800),8003=>array(55,-14,557,800),8004=>array(55,-14,557,800),8005=>array(55,-14,557,800),8008=>array(3,-14,748,797),8009=>array(3,-14,792,797),8010=>array(2,-14,1039,800),8011=>array(3,-14,1043,800),8012=>array(3,-14,882,800),8013=>array(2,-14,914,800),8016=>array(73,-14,521,797),8017=>array(73,-14,521,797),8018=>array(73,-14,521,800),8019=>array(73,-14,521,800),8020=>array(73,-14,521,800),8021=>array(73,-14,521,800),8022=>array(73,-14,521,928),8023=>array(73,-14,521,928),8025=>array(3,0,786,797),8027=>array(3,0,1000,800),8029=>array(2,0,1014,800),8031=>array(2,0,900,928),8032=>array(66,-14,769,797),8033=>array(66,-14,769,797),8034=>array(66,-14,769,800),8035=>array(66,-14,769,800),8036=>array(66,-14,769,800),8037=>array(66,-14,769,800),8038=>array(66,-14,769,928),8039=>array(66,-14,769,928),8040=>array(3,0,764,797),8041=>array(3,0,805,797),8042=>array(2,0,1051,800),8043=>array(3,0,1057,800),8044=>array(3,0,908,800),8045=>array(2,0,934,800),8046=>array(3,0,883,928),8047=>array(2,0,914,928),8048=>array(55,-12,611,800),8049=>array(55,-12,611,800),8050=>array(65,-14,473,800),8051=>array(65,-14,473,800),8052=>array(91,-208,549,800),8053=>array(91,-208,549,800),8054=>array(-56,0,304,800),8055=>array(81,0,324,800),8056=>array(55,-14,557,800),8057=>array(55,-14,557,800),8058=>array(73,-14,521,800),8059=>array(73,-14,521,800),8060=>array(66,-14,769,800),8061=>array(66,-14,769,800),8064=>array(55,-208,611,797),8065=>array(55,-208,611,797),8066=>array(55,-208,611,800),8067=>array(55,-208,611,800),8068=>array(55,-208,611,800),8069=>array(55,-208,611,800),8070=>array(55,-208,611,928),8071=>array(55,-208,611,928),8072=>array(8,-208,676,797),8073=>array(8,-208,676,797),8074=>array(2,-208,869,800),8075=>array(3,-208,869,800),8076=>array(3,-208,761,800),8077=>array(2,-208,793,800),8078=>array(3,-208,700,928),8079=>array(2,-208,734,928),8080=>array(91,-208,549,797),8081=>array(91,-208,549,797),8082=>array(91,-208,549,800),8083=>array(91,-208,549,800),8084=>array(91,-208,549,800),8085=>array(91,-208,549,800),8086=>array(91,-208,549,928),8087=>array(91,-208,549,928),8088=>array(3,-208,739,797),8089=>array(3,-208,737,797),8090=>array(2,-208,988,800),8091=>array(3,-208,991,800),8092=>array(3,-208,929,800),8093=>array(2,-208,953,800),8094=>array(3,-208,835,928),8095=>array(2,-208,849,928),8096=>array(66,-208,769,797),8097=>array(66,-208,769,797),8098=>array(66,-208,769,800),8099=>array(66,-208,769,800),8100=>array(66,-208,769,800),8101=>array(66,-208,769,800),8102=>array(66,-208,769,928),8103=>array(66,-208,769,928),8104=>array(3,-208,764,797),8105=>array(3,-208,805,797),8106=>array(2,-208,1051,800),8107=>array(3,-208,1057,800),8108=>array(3,-208,908,800),8109=>array(2,-208,934,800),8110=>array(3,-208,883,928),8111=>array(2,-208,914,928),8112=>array(55,-12,611,785),8113=>array(55,-12,611,745),8114=>array(55,-208,611,800),8115=>array(55,-208,611,559),8116=>array(55,-208,611,800),8118=>array(55,-12,611,777),8119=>array(55,-208,611,777),8120=>array(8,0,676,928),8121=>array(8,0,676,899),8122=>array(-2,0,708,800),8123=>array(8,0,676,800),8124=>array(8,-208,676,729),8125=>array(190,595,309,797),8126=>array(214,-208,321,-45),8127=>array(190,595,309,797),8128=>array(89,639,411,777),8129=>array(89,659,411,928),8130=>array(91,-208,549,800),8131=>array(91,-208,549,560),8132=>array(91,-208,549,800),8134=>array(91,-208,549,777),8135=>array(91,-208,549,777),8136=>array(-2,0,741,800),8137=>array(-12,0,682,800),8138=>array(-2,0,833,800),8139=>array(-6,0,765,800),8140=>array(98,-208,654,729),8141=>array(67,595,446,800),8142=>array(88,595,447,800),8143=>array(89,595,411,928),8144=>array(-10,0,304,785),8145=>array(-14,0,304,745),8146=>array(-20,0,304,978),8147=>array(2,0,313,978),8150=>array(-14,0,309,777),8151=>array(-13,0,310,928),8152=>array(-5,0,300,928),8153=>array(1,0,293,899),8154=>array(-2,0,377,800),8155=>array(-9,0,311,800),8157=>array(62,595,443,800),8158=>array(73,595,461,800),8159=>array(89,595,411,928),8160=>array(73,-14,521,785),8161=>array(73,-14,521,745),8162=>array(73,-14,521,978),8163=>array(73,-14,521,978),8164=>array(91,-208,580,797),8165=>array(91,-208,580,797),8166=>array(73,-14,521,777),8167=>array(73,-14,521,928),8168=>array(-2,0,613,928),8169=>array(-2,0,613,899),8170=>array(-2,0,847,800),8171=>array(-15,0,821,800),8172=>array(3,0,651,797),8173=>array(83,659,395,978),8174=>array(105,659,415,978),8175=>array(83,617,317,800),8178=>array(66,-208,769,800),8179=>array(66,-208,769,547),8180=>array(66,-208,769,800),8182=>array(66,-14,769,777),8183=>array(66,-208,769,777),8184=>array(-2,-14,885,800),8185=>array(-7,-14,750,800),8186=>array(-2,0,884,800),8187=>array(-18,0,752,800),8188=>array(38,-208,726,738),8189=>array(181,616,415,800),8190=>array(190,595,309,797),8208=>array(49,234,312,314),8209=>array(49,234,312,314),8210=>array(49,239,587,309),8211=>array(49,239,451,309),8212=>array(49,239,951,309),8213=>array(0,239,1000,309),8214=>array(127,-236,371,764),8215=>array(-10,-236,510,-9),8216=>array(85,489,228,729),8217=>array(87,499,230,729),8218=>array(85,-116,228,124),8219=>array(87,499,230,729),8220=>array(85,489,428,729),8221=>array(85,489,428,729),8222=>array(85,-116,428,124),8223=>array(85,489,428,729),8224=>array(28,-96,472,729),8225=>array(28,-96,472,729),8226=>array(150,227,440,516),8227=>array(150,188,479,555),8228=>array(115,0,219,124),8229=>array(115,0,552,124),8230=>array(115,0,885,124),8231=>array(107,302,210,426),8240=>array(55,-14,1287,742),8241=>array(55,-14,1681,742),8242=>array(20,547,203,729),8243=>array(20,547,350,729),8244=>array(20,547,496,729),8245=>array(20,547,203,729),8246=>array(20,547,350,729),8247=>array(20,547,496,729),8248=>array(5,-236,333,-30),8249=>array(77,69,306,517),8250=>array(94,69,323,517),8251=>array(95,2,740,725),8252=>array(72,0,414,729),8253=>array(72,0,461,742),8254=>array(-10,686,510,755),8255=>array(-43,-237,847,-60),8256=>array(-43,752,847,929),8257=>array(-42,-236,286,229),8258=>array(30,-29,970,814),8259=>array(108,313,400,421),8260=>array(-183,-14,350,742),8261=>array(86,-132,293,760),8262=>array(86,-132,293,760),8263=>array(36,0,886,742),8264=>array(72,0,661,742),8265=>array(72,0,661,742),8266=>array(49,-123,448,545),8267=>array(115,-96,566,729),8268=>array(105,220,395,509),8269=>array(105,220,395,509),8270=>array(30,-29,470,427),8271=>array(139,-116,282,517),8272=>array(-43,-237,847,929),8273=>array(30,-7,470,929),8274=>array(71,-93,408,729),8275=>array(49,228,951,399),8276=>array(-43,-240,847,-63),8277=>array(152,98,686,631),8278=>array(122,149,464,589),8279=>array(20,547,643,729),8280=>array(175,125,663,613),8281=>array(175,120,663,608),8282=>array(107,0,210,729),8283=>array(49,-138,749,867),8284=>array(55,0,783,729),8285=>array(107,39,210,655),8286=>array(107,8,210,683),8304=>array(42,319,366,742),8305=>array(60,326,116,751),8308=>array(31,326,369,734),8309=>array(50,319,353,734),8310=>array(45,319,369,742),8311=>array(53,326,354,734),8312=>array(43,319,365,742),8313=>array(41,319,364,742),8314=>array(67,326,461,677),8315=>array(67,479,461,525),8316=>array(67,422,461,581),8317=>array(54,252,195,751),8318=>array(50,252,191,751),8319=>array(57,326,346,640),8320=>array(42,-7,366,416),8321=>array(67,0,346,408),8322=>array(46,0,338,416),8323=>array(48,-7,350,416),8324=>array(31,0,369,408),8325=>array(50,-7,353,408),8326=>array(45,-7,369,416),8327=>array(53,0,354,408),8328=>array(43,-7,365,416),8329=>array(41,-7,364,416),8330=>array(67,0,461,351),8331=>array(67,152,461,199),8332=>array(67,96,461,254),8333=>array(54,-74,195,425),8334=>array(50,-74,191,425),8336=>array(38,-8,329,313),8337=>array(35,-8,354,313),8338=>array(35,-8,351,313),8339=>array(57,0,391,306),8340=>array(35,-8,354,313),8341=>array(57,0,346,425),8342=>array(57,0,363,425),8343=>array(60,0,116,425),8344=>array(57,0,560,313),8345=>array(57,0,346,313),8346=>array(57,-117,365,313),8347=>array(57,0,320,322),8348=>array(17,0,232,393),8352=>array(42,0,835,729),8353=>array(56,-44,593,778),8354=>array(47,-14,587,742),8355=>array(65,0,599,729),8356=>array(63,0,548,742),8357=>array(91,-93,889,640),8358=>array(57,0,691,729),8359=>array(98,-14,1226,729),8360=>array(98,-14,1025,729),8361=>array(29,0,960,729),8362=>array(46,-14,743,729),8363=>array(55,-156,619,760),8364=>array(0,-14,570,742),8365=>array(20,0,636,729),8366=>array(10,0,626,729),8367=>array(102,-222,1205,742),8368=>array(22,-14,569,742),8369=>array(33,0,579,729),8370=>array(45,-81,586,809),8371=>array(8,0,627,729),8372=>array(57,-14,717,742),8373=>array(81,-147,556,760),8376=>array(10,0,626,729),8377=>array(52,0,585,729),8378=>array(5,2,649,731),8400=>array(-491,635,-26,760),8401=>array(-470,635,-5,760),8406=>array(-470,560,-26,760),8407=>array(-470,560,-26,760),8411=>array(-491,560,-10,758),8412=>array(-586,560,86,758),8417=>array(-470,560,-26,760),8448=>array(33,-24,980,752),8449=>array(33,-24,999,752),8450=>array(56,-14,644,742),8451=>array(95,-14,1053,742),8452=>array(-21,0,637,729),8453=>array(29,-24,987,752),8454=>array(29,-24,1038,752),8455=>array(80,-14,560,742),8456=>array(54,-146,642,611),8457=>array(95,0,894,742),8459=>array(36,-14,943,748),8460=>array(1,-128,693,731),8461=>array(98,0,751,729),8462=>array(35,0,566,760),8463=>array(44,0,566,760),8464=>array(29,-15,432,742),8465=>array(52,-14,659,742),8466=>array(33,-14,679,743),8467=>array(-14,-14,353,742),8468=>array(16,-14,763,760),8469=>array(97,0,704,729),8470=>array(26,0,969,729),8471=>array(138,0,862,724),8472=>array(54,-221,658,495),8473=>array(98,0,666,729),8474=>array(56,-129,731,742),8475=>array(32,-9,764,774),8476=>array(41,-14,803,743),8477=>array(98,0,774,729),8478=>array(83,0,814,729),8479=>array(98,-107,666,847),8480=>array(126,443,770,730),8481=>array(-2,0,1023,547),8482=>array(144,447,784,729),8483=>array(8,-108,676,846),8484=>array(45,0,700,729),8485=>array(43,-213,523,760),8486=>array(38,0,726,738),8487=>array(38,-14,726,724),8488=>array(12,-149,573,783),8489=>array(33,0,255,547),8490=>array(98,0,677,729),8491=>array(8,0,676,928),8492=>array(45,0,734,772),8493=>array(63,-12,652,742),8494=>array(61,-12,793,647),8495=>array(42,-14,547,533),8496=>array(79,-14,565,742),8497=>array(41,-16,758,755),8498=>array(98,0,517,729),8499=>array(28,-28,1032,751),8500=>array(51,-12,411,395),8501=>array(50,-14,712,742),8502=>array(-2,-14,653,743),8503=>array(13,-35,407,742),8504=>array(42,-35,591,742),8505=>array(34,0,355,760),8506=>array(44,-21,915,654),8507=>array(74,0,1162,547),8508=>array(18,-8,685,547),8509=>array(0,-194,669,560),8510=>array(98,0,648,729),8511=>array(98,0,750,729),8512=>array(12,-192,791,719),8513=>array(80,-14,716,742),8514=>array(4,0,458,729),8515=>array(3,0,457,729),8516=>array(-2,0,613,729),8517=>array(42,0,786,729),8518=>array(44,-14,709,760),8519=>array(44,-14,572,560),8520=>array(39,0,313,760),8521=>array(-114,-208,313,760),8523=>array(29,-14,715,742),8526=>array(40,0,441,547),8528=>array(67,-14,922,742),8529=>array(67,-14,932,742),8530=>array(67,-14,1335,742),8531=>array(67,-14,918,742),8532=>array(46,-14,918,742),8533=>array(67,-14,921,742),8534=>array(46,-14,921,742),8535=>array(48,-14,921,742),8536=>array(31,-14,921,742),8537=>array(67,-14,937,742),8538=>array(50,-14,937,742),8539=>array(67,-14,933,742),8540=>array(48,-14,933,742),8541=>array(50,-14,933,742),8542=>array(53,-14,933,742),8543=>array(67,-14,751,742),8544=>array(98,0,197,729),8545=>array(98,0,394,729),8546=>array(98,0,591,729),8547=>array(98,0,915,729),8548=>array(8,0,676,729),8549=>array(8,0,824,729),8550=>array(8,0,1021,729),8551=>array(8,0,1219,729),8552=>array(98,0,886,729),8553=>array(30,0,654,729),8554=>array(30,0,835,729),8555=>array(30,0,1032,729),8556=>array(98,0,552,729),8557=>array(56,-14,644,742),8558=>array(98,0,711,729),8559=>array(98,0,765,729),8560=>array(94,0,184,760),8561=>array(94,0,364,760),8562=>array(94,0,543,760),8563=>array(94,0,782,760),8564=>array(30,0,562,547),8565=>array(30,0,717,760),8566=>array(30,0,897,760),8567=>array(30,0,1077,760),8568=>array(94,0,786,760),8569=>array(29,0,559,547),8570=>array(29,0,729,760),8571=>array(29,0,908,760),8572=>array(94,0,184,760),8573=>array(55,-14,488,560),8574=>array(55,-14,544,760),8575=>array(91,0,889,560),8576=>array(59,0,1186,729),8577=>array(98,0,711,729),8578=>array(59,0,1186,729),8579=>array(56,-14,644,742),8580=>array(62,-14,495,560),8581=>array(56,-208,644,742),8585=>array(42,-14,918,742),8592=>array(49,100,781,527),8593=>array(205,0,632,732),8594=>array(57,100,789,527),8595=>array(205,-3,632,729),8596=>array(49,100,789,527),8597=>array(205,-8,632,732),8598=>array(141,25,703,587),8599=>array(141,25,703,587),8600=>array(141,25,703,587),8601=>array(141,25,703,587),8602=>array(49,100,781,527),8603=>array(57,100,789,527),8604=>array(21,103,827,414),8605=>array(11,103,816,414),8606=>array(49,100,781,527),8607=>array(206,0,633,732),8608=>array(57,100,789,527),8609=>array(206,-3,633,729),8610=>array(49,100,781,527),8611=>array(57,100,789,527),8612=>array(49,100,781,527),8613=>array(206,0,632,732),8614=>array(57,100,789,527),8615=>array(206,-3,632,729),8616=>array(206,0,632,732),8617=>array(49,100,780,565),8618=>array(58,100,789,565),8619=>array(49,100,780,565),8620=>array(58,100,789,565),8621=>array(49,100,789,527),8622=>array(49,93,789,534),8623=>array(146,-2,702,730),8624=>array(169,0,629,743),8625=>array(209,0,669,743),8626=>array(169,-14,629,729),8627=>array(209,-14,669,729),8628=>array(233,-3,760,604),8629=>array(49,100,656,626),8630=>array(22,203,799,668),8631=>array(39,203,816,668),8632=>array(108,25,788,729),8633=>array(55,-46,783,673),8634=>array(103,62,762,680),8635=>array(77,62,736,680),8636=>array(49,272,781,527),8637=>array(49,100,781,355),8638=>array(377,0,632,732),8639=>array(205,0,460,732),8640=>array(57,272,789,527),8641=>array(57,100,789,355),8642=>array(377,0,632,732),8643=>array(205,0,460,732),8644=>array(49,-47,789,674),8645=>array(58,-3,779,732),8646=>array(49,-47,789,674),8647=>array(49,-47,781,674),8648=>array(59,0,779,732),8649=>array(58,-47,790,674),8650=>array(59,-3,779,729),8651=>array(49,7,789,620),8652=>array(49,7,789,620),8653=>array(49,100,781,527),8654=>array(49,94,789,533),8655=>array(57,100,789,527),8656=>array(49,100,781,527),8657=>array(206,0,633,732),8658=>array(57,100,789,527),8659=>array(206,-3,633,729),8660=>array(49,100,789,527),8661=>array(205,-8,633,732),8662=>array(141,-23,751,587),8663=>array(92,-23,703,587),8664=>array(92,25,703,636),8665=>array(141,25,751,636),8666=>array(49,100,781,527),8667=>array(57,100,789,527),8668=>array(49,100,781,527),8669=>array(57,100,789,527),8670=>array(205,0,632,732),8671=>array(205,-3,632,729),8672=>array(49,100,781,527),8673=>array(205,0,633,732),8674=>array(57,100,789,527),8675=>array(205,-3,633,729),8676=>array(52,99,781,528),8677=>array(57,99,786,528),8678=>array(27,65,781,562),8679=>array(171,0,667,754),8680=>array(35,65,789,562),8681=>array(171,-25,667,729),8682=>array(171,0,667,754),8683=>array(171,0,667,754),8684=>array(156,0,682,754),8685=>array(171,0,667,754),8686=>array(171,0,667,754),8687=>array(171,0,667,754),8688=>array(57,65,811,562),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(171,-25,667,754),8692=>array(57,100,789,527),8693=>array(58,-3,779,732),8694=>array(57,-193,789,820),8695=>array(49,94,781,533),8696=>array(57,94,789,533),8697=>array(49,94,789,533),8698=>array(49,94,781,533),8699=>array(57,94,789,533),8700=>array(49,94,789,533),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(8,0,676,729),8705=>array(66,-14,554,742),8706=>array(46,-14,471,662),8707=>array(98,0,568,729),8708=>array(98,-46,568,776),8709=>array(76,-10,795,710),8710=>array(-3,0,672,719),8711=>array(-3,0,672,719),8712=>array(85,-10,786,710),8713=>array(85,-138,786,835),8714=>array(106,76,612,550),8715=>array(85,-10,786,710),8716=>array(85,-138,786,835),8717=>array(106,76,612,550),8718=>array(146,0,490,485),8719=>array(76,-192,680,719),8720=>array(76,-192,680,719),8721=>array(12,-192,654,719),8722=>array(106,272,732,355),8723=>array(106,0,732,627),8724=>array(106,0,732,729),8725=>array(0,-93,337,729),8726=>array(192,-54,529,768),8727=>array(127,0,710,627),8728=>array(158,160,468,470),8729=>array(168,168,458,458),8730=>array(30,-20,637,811),8731=>array(30,-20,637,933),8732=>array(30,-20,637,924),8733=>array(107,112,607,487),8734=>array(107,112,726,487),8735=>array(138,99,700,661),8736=>array(85,0,786,729),8737=>array(85,-53,786,729),8738=>array(116,-3,732,727),8739=>array(211,-214,289,771),8740=>array(50,-214,451,771),8741=>array(133,-214,367,771),8742=>array(50,-214,451,771),8743=>array(129,0,603,579),8744=>array(129,0,603,579),8745=>array(129,0,603,579),8746=>array(129,0,603,579),8747=>array(57,-212,464,757),8748=>array(57,-212,732,757),8749=>array(57,-212,1000,757),8750=>array(57,-212,464,757),8751=>array(57,-212,732,757),8752=>array(57,-212,1000,757),8753=>array(57,-213,522,757),8754=>array(57,-212,514,757),8755=>array(57,-212,515,757),8756=>array(59,100,577,604),8757=>array(59,100,577,604),8758=>array(79,100,182,604),8759=>array(59,100,577,604),8760=>array(106,272,732,552),8761=>array(106,78,732,552),8762=>array(105,78,732,552),8763=>array(106,78,732,552),8764=>array(106,228,732,399),8765=>array(106,228,732,399),8766=>array(79,149,759,479),8767=>array(106,42,732,584),8768=>array(102,0,273,626),8769=>array(106,77,732,553),8770=>array(106,133,732,454),8771=>array(106,172,732,494),8772=>array(106,48,732,603),8773=>array(106,90,732,594),8774=>array(106,12,732,594),8775=>array(106,-5,732,657),8776=>array(106,133,732,494),8777=>array(106,2,732,625),8778=>array(106,90,732,598),8779=>array(106,59,732,602),8780=>array(106,90,732,594),8781=>array(105,105,732,521),8782=>array(106,26,732,601),8783=>array(106,172,732,601),8784=>array(106,172,732,625),8785=>array(106,1,732,625),8786=>array(106,2,733,625),8787=>array(106,2,733,625),8788=>array(101,151,899,476),8789=>array(100,151,900,475),8790=>array(106,172,732,454),8791=>array(106,172,732,760),8792=>array(106,172,732,662),8793=>array(106,172,732,812),8794=>array(106,172,732,812),8795=>array(106,172,732,849),8796=>array(106,172,732,854),8797=>array(106,172,732,764),8798=>array(106,172,732,760),8799=>array(106,172,732,856),8800=>array(106,19,732,608),8801=>array(106,90,732,537),8802=>array(106,-24,732,650),8803=>array(106,0,732,629),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-83,732,638),8807=>array(106,-83,732,638),8808=>array(106,-164,732,638),8809=>array(106,-164,732,638),8810=>array(72,22,975,609),8811=>array(72,22,975,609),8812=>array(86,-132,378,759),8813=>array(105,13,732,613),8814=>array(106,2,732,674),8815=>array(106,-47,732,625),8816=>array(106,-102,732,667),8817=>array(106,-102,732,667),8818=>array(106,-55,732,582),8819=>array(106,-39,732,582),8820=>array(106,-105,732,664),8821=>array(106,-102,732,667),8822=>array(102,-87,732,686),8823=>array(102,-87,732,686),8824=>array(102,-197,732,797),8825=>array(102,-197,732,797),8826=>array(106,-38,732,664),8827=>array(106,-38,732,664),8828=>array(106,-105,732,667),8829=>array(106,-105,732,667),8830=>array(106,-85,732,667),8831=>array(106,-85,732,667),8832=>array(106,-61,732,764),8833=>array(106,-138,732,687),8834=>array(100,80,738,546),8835=>array(100,80,738,546),8836=>array(100,-96,738,726),8837=>array(100,-100,738,722),8838=>array(93,0,732,613),8839=>array(106,0,745,613),8840=>array(93,-116,732,730),8841=>array(106,-116,745,730),8842=>array(93,-73,732,614),8843=>array(93,-73,732,614),8844=>array(129,0,603,579),8845=>array(129,0,603,579),8846=>array(129,2,603,582),8847=>array(106,0,732,568),8848=>array(106,0,732,568),8849=>array(106,-83,732,630),8850=>array(106,-83,732,630),8851=>array(106,0,674,626),8852=>array(106,0,674,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-14,747,643),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(91,-14,747,643),8863=>array(91,-14,747,643),8864=>array(91,-14,747,643),8865=>array(91,-14,747,643),8866=>array(85,0,786,700),8867=>array(85,0,786,700),8868=>array(85,0,786,700),8869=>array(85,0,786,700),8870=>array(85,0,436,700),8871=>array(85,0,436,700),8872=>array(85,0,786,700),8873=>array(85,0,786,700),8874=>array(85,0,786,700),8875=>array(85,0,786,700),8876=>array(85,-40,786,740),8877=>array(85,-40,786,740),8878=>array(85,-40,786,740),8879=>array(85,-40,786,740),8880=>array(106,-43,724,670),8881=>array(106,-43,724,670),8882=>array(106,15,732,612),8883=>array(106,15,732,612),8884=>array(106,-48,732,674),8885=>array(106,-48,732,674),8886=>array(59,175,941,454),8887=>array(59,175,941,454),8888=>array(48,175,790,454),8889=>array(59,-47,779,674),8890=>array(116,0,404,701),8891=>array(98,0,634,740),8892=>array(98,0,634,740),8893=>array(98,0,634,740),8894=>array(138,0,700,562),8895=>array(138,0,700,562),8896=>array(-3,-192,823,719),8897=>array(-3,-192,823,719),8898=>array(68,-192,752,719),8899=>array(68,-192,752,719),8900=>array(3,-233,491,807),8901=>array(107,285,210,409),8902=>array(122,149,504,512),8903=>array(106,15,732,613),8904=>array(106,-30,894,657),8905=>array(106,-30,894,657),8906=>array(106,-30,894,657),8907=>array(106,-30,894,657),8908=>array(106,-30,894,657),8909=>array(106,172,732,494),8910=>array(48,0,684,579),8911=>array(48,0,684,579),8912=>array(93,-3,732,630),8913=>array(106,-3,745,630),8914=>array(103,0,735,663),8915=>array(103,-14,735,649),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,46,732,581),8919=>array(106,46,732,581),8920=>array(72,22,1350,609),8921=>array(72,22,1350,609),8922=>array(106,-228,732,854),8923=>array(106,-228,732,854),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-105,732,667),8927=>array(106,-105,732,667),8928=>array(106,-178,732,764),8929=>array(106,-178,732,764),8930=>array(106,-141,732,767),8931=>array(106,-141,732,767),8932=>array(106,-94,732,619),8933=>array(106,-94,732,619),8934=>array(106,-138,732,582),8935=>array(106,-138,732,582),8936=>array(106,-169,732,667),8937=>array(110,-171,736,667),8938=>array(106,-130,732,756),8939=>array(106,-130,732,756),8940=>array(106,-189,732,815),8941=>array(104,-189,730,815),8942=>array(448,-93,551,715),8943=>array(115,249,884,373),8944=>array(115,-93,884,715),8945=>array(115,-93,884,715),8946=>array(43,-10,957,710),8947=>array(85,-10,786,710),8948=>array(106,76,612,550),8949=>array(85,-10,786,910),8950=>array(85,-10,786,853),8951=>array(106,76,612,686),8952=>array(85,-144,786,710),8953=>array(85,-10,786,710),8954=>array(43,-10,957,710),8955=>array(85,-10,786,710),8956=>array(106,76,612,550),8957=>array(85,-10,786,853),8958=>array(106,76,612,686),8959=>array(106,0,765,720),8960=>array(36,-18,567,514),8961=>array(56,162,540,443),8962=>array(71,0,563,596),8963=>array(205,481,632,732),8964=>array(205,0,632,251),8965=>array(205,0,632,406),8966=>array(205,0,632,513),8967=>array(154,-29,334,788),8968=>array(86,-132,293,760),8969=>array(97,-132,304,760),8970=>array(86,-132,293,760),8971=>array(97,-132,304,760),8972=>array(369,-77,759,313),8973=>array(49,-77,439,313),8974=>array(369,243,759,634),8975=>array(49,243,439,634),8976=>array(106,140,732,421),8977=>array(3,126,510,634),8984=>array(121,0,879,759),8985=>array(106,140,732,421),8988=>array(86,425,403,760),8989=>array(65,425,383,760),8990=>array(86,-70,403,264),8991=>array(65,-70,383,264),8992=>array(210,-250,497,928),8993=>array(21,-237,307,942),8996=>array(76,227,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(81,0,304,547),9076=>array(91,-208,580,560),9077=>array(66,-14,769,547),9082=>array(55,-12,611,559),9085=>array(13,-228,745,102),9095=>array(76,0,1096,748),9108=>array(17,0,856,727),9115=>array(86,-252,414,946),9116=>array(86,-252,181,942),9117=>array(86,-240,414,942),9118=>array(86,-252,414,946),9119=>array(319,-252,414,942),9120=>array(86,-240,414,942),9121=>array(86,-252,414,928),9122=>array(86,-252,181,942),9123=>array(86,-240,414,942),9124=>array(86,-252,414,928),9125=>array(319,-252,414,935),9126=>array(86,-240,414,935),9127=>array(330,-261,668,928),9128=>array(82,-252,420,940),9129=>array(330,-240,668,940),9130=>array(330,-256,420,943),9131=>array(82,-261,420,928),9132=>array(330,-252,668,940),9133=>array(82,-240,420,940),9134=>array(210,-250,307,942),9166=>array(27,65,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(43,-129,601,294),9250=>array(-62,-14,580,760),9251=>array(71,-228,563,102),9312=>array(74,-10,822,738),9313=>array(74,-10,822,738),9314=>array(74,-10,822,738),9315=>array(74,-10,822,738),9316=>array(74,-10,822,738),9317=>array(74,-10,822,738),9318=>array(74,-10,822,738),9319=>array(74,-10,822,738),9320=>array(74,-10,822,738),9321=>array(74,-10,822,738),9472=>array(-10,242,612,326),9473=>array(-10,200,612,368),9474=>array(262,-302,340,973),9475=>array(223,-302,379,973),9476=>array(-10,242,612,326),9477=>array(-10,200,612,368),9478=>array(262,-302,340,973),9479=>array(223,-302,379,973),9480=>array(-10,242,612,326),9481=>array(-10,200,612,368),9482=>array(262,-302,340,973),9483=>array(223,-302,379,973),9484=>array(262,-302,612,326),9485=>array(262,-302,612,368),9486=>array(223,-302,612,326),9487=>array(223,-302,612,368),9488=>array(-10,-302,340,326),9489=>array(-10,-302,340,368),9490=>array(-10,-302,379,326),9491=>array(-10,-302,379,368),9492=>array(262,242,612,973),9493=>array(262,200,612,973),9494=>array(223,242,612,973),9495=>array(223,200,612,973),9496=>array(-10,242,340,973),9497=>array(-10,200,340,973),9498=>array(-10,242,379,973),9499=>array(-10,200,379,973),9500=>array(262,-302,612,973),9501=>array(262,-302,612,973),9502=>array(223,-302,612,973),9503=>array(223,-302,612,973),9504=>array(223,-302,612,973),9505=>array(223,-302,612,973),9506=>array(223,-302,612,973),9507=>array(223,-302,612,973),9508=>array(-10,-302,340,973),9509=>array(-10,-302,340,973),9510=>array(-10,-302,379,973),9511=>array(-10,-302,379,973),9512=>array(-10,-302,379,973),9513=>array(-10,-302,379,973),9514=>array(-10,-302,379,973),9515=>array(-10,-302,379,973),9516=>array(-10,-302,612,326),9517=>array(-10,-302,612,368),9518=>array(-10,-302,612,368),9519=>array(-10,-302,612,368),9520=>array(-10,-302,612,326),9521=>array(-10,-302,612,368),9522=>array(-10,-302,612,368),9523=>array(-10,-302,612,368),9524=>array(-10,242,612,973),9525=>array(-10,200,612,973),9526=>array(-10,200,612,973),9527=>array(-10,200,612,973),9528=>array(-10,242,612,973),9529=>array(-10,200,612,973),9530=>array(-10,200,612,973),9531=>array(-10,200,612,973),9532=>array(-10,-302,612,973),9533=>array(-10,-302,612,973),9534=>array(-10,-302,612,973),9535=>array(-10,-302,612,973),9536=>array(-10,-302,612,973),9537=>array(-10,-302,612,973),9538=>array(-10,-302,612,973),9539=>array(-10,-302,612,973),9540=>array(-10,-302,612,973),9541=>array(-10,-302,612,973),9542=>array(-10,-302,612,973),9543=>array(-10,-302,612,973),9544=>array(-10,-302,612,973),9545=>array(-10,-302,612,973),9546=>array(-10,-302,612,973),9547=>array(-10,-302,612,973),9548=>array(-10,242,612,326),9549=>array(-10,200,612,368),9550=>array(262,-302,340,973),9551=>array(223,-302,379,973),9552=>array(-10,158,612,410),9553=>array(184,-302,418,973),9554=>array(262,-302,612,410),9555=>array(184,-302,612,326),9556=>array(184,-302,612,410),9557=>array(-10,-302,340,410),9558=>array(-10,-302,418,326),9559=>array(-10,-302,418,410),9560=>array(262,158,612,973),9561=>array(184,242,612,973),9562=>array(184,158,612,973),9563=>array(-10,158,340,973),9564=>array(-10,242,418,973),9565=>array(-10,158,418,973),9566=>array(262,-302,612,973),9567=>array(184,-302,612,973),9568=>array(184,-302,612,973),9569=>array(-10,-302,340,973),9570=>array(-10,-302,418,973),9571=>array(-10,-302,418,973),9572=>array(-10,-302,612,410),9573=>array(-10,-302,612,326),9574=>array(-10,-302,612,410),9575=>array(-10,158,612,973),9576=>array(-10,242,612,973),9577=>array(-10,158,612,973),9578=>array(-10,-302,612,973),9579=>array(-10,-302,612,973),9580=>array(-10,-302,612,973),9581=>array(262,-302,612,326),9582=>array(-10,-302,340,326),9583=>array(-10,242,340,973),9584=>array(262,242,612,973),9585=>array(-53,-302,655,973),9586=>array(-53,-302,655,973),9587=>array(-53,-302,655,973),9588=>array(-10,242,311,326),9589=>array(262,284,340,973),9590=>array(311,242,612,326),9591=>array(262,-302,340,284),9592=>array(-10,200,311,368),9593=>array(223,284,379,973),9594=>array(311,200,612,368),9595=>array(223,-302,379,284),9596=>array(-10,200,612,368),9597=>array(223,-302,379,973),9598=>array(-10,200,612,368),9599=>array(223,-302,379,973),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,775,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-123,854,643),9633=>array(91,-123,854,643),9634=>array(91,-123,854,643),9635=>array(91,-123,854,643),9636=>array(91,-123,854,643),9637=>array(91,-123,854,643),9638=>array(91,-123,854,643),9639=>array(91,-123,854,643),9640=>array(91,-123,854,643),9641=>array(91,-123,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-123,766,643),9651=>array(3,-123,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-123,766,643),9655=>array(3,-123,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-123,766,643),9661=>array(3,-123,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-123,766,643),9665=>array(3,-123,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-123,766,643),9671=>array(3,-123,766,643),9672=>array(3,-123,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,700,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,384,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,384,260),9696=>array(55,260,818,645),9697=>array(55,-125,818,260),9698=>array(3,-123,766,643),9699=>array(3,-123,766,643),9700=>array(3,-123,766,643),9701=>array(3,-123,766,643),9702=>array(150,227,440,516),9703=>array(91,-123,854,643),9704=>array(91,-123,854,643),9705=>array(91,-123,854,643),9706=>array(91,-123,854,643),9707=>array(91,-123,854,643),9708=>array(3,-123,766,643),9709=>array(3,-123,766,643),9710=>array(3,-123,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-123,854,643),9713=>array(91,-123,854,643),9714=>array(91,-123,854,643),9715=>array(91,-123,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-123,766,643),9721=>array(3,-123,766,643),9722=>array(3,-123,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-123,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(66,-11,831,735),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(187,133,651,596),9899=>array(187,133,651,596),9900=>array(247,194,591,537),9901=>array(174,194,664,537),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-10,815,744),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-10,815,744),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(79,-14,759,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,264,729),10076=>array(59,395,237,729),10077=>array(85,395,479,729),10078=>array(59,395,453,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(74,-10,822,738),10103=>array(74,-10,822,738),10104=>array(74,-10,822,738),10105=>array(74,-10,822,738),10106=>array(74,-10,822,738),10107=>array(74,-10,822,738),10108=>array(74,-10,822,738),10109=>array(74,-10,822,738),10110=>array(74,-10,822,738),10111=>array(74,-10,822,738),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,65,811,562),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(54,-163,352,769),10182=>array(39,-163,336,769),10208=>array(3,-233,491,807),10214=>array(86,-132,398,760),10215=>array(85,-132,398,760),10216=>array(89,-132,310,759),10217=>array(80,-132,301,759),10218=>array(89,-132,476,759),10219=>array(80,-132,467,759),10224=>array(44,0,794,732),10225=>array(43,-3,793,729),10226=>array(39,53,814,658),10227=>array(39,61,814,666),10228=>array(57,-14,1108,643),10229=>array(49,100,1376,527),10230=>array(57,100,1385,527),10231=>array(49,100,1385,527),10232=>array(49,100,1376,527),10233=>array(57,100,1385,527),10234=>array(49,100,1385,527),10235=>array(49,100,1376,527),10236=>array(57,100,1385,527),10237=>array(49,100,1376,527),10238=>array(57,100,1385,527),10239=>array(57,100,1385,527),10241=>array(146,635,293,781),10242=>array(146,358,293,504),10243=>array(146,358,293,781),10244=>array(146,82,293,228),10245=>array(146,82,293,781),10246=>array(146,82,293,504),10247=>array(146,82,293,781),10248=>array(439,635,586,781),10249=>array(146,635,586,781),10250=>array(146,358,586,781),10251=>array(146,358,586,781),10252=>array(146,82,586,781),10253=>array(146,82,586,781),10254=>array(146,82,586,781),10255=>array(146,82,586,781),10256=>array(439,358,586,504),10257=>array(146,358,586,781),10258=>array(146,358,586,504),10259=>array(146,358,586,781),10260=>array(146,82,586,504),10261=>array(146,82,586,781),10262=>array(146,82,586,504),10263=>array(146,82,586,781),10264=>array(439,358,586,781),10265=>array(146,358,586,781),10266=>array(146,358,586,781),10267=>array(146,358,586,781),10268=>array(146,82,586,781),10269=>array(146,82,586,781),10270=>array(146,82,586,781),10271=>array(146,82,586,781),10272=>array(439,82,586,228),10273=>array(146,82,586,781),10274=>array(146,82,586,504),10275=>array(146,82,586,781),10276=>array(146,82,586,228),10277=>array(146,82,586,781),10278=>array(146,82,586,504),10279=>array(146,82,586,781),10280=>array(439,82,586,781),10281=>array(146,82,586,781),10282=>array(146,82,586,781),10283=>array(146,82,586,781),10284=>array(146,82,586,781),10285=>array(146,82,586,781),10286=>array(146,82,586,781),10287=>array(146,82,586,781),10288=>array(439,82,586,504),10289=>array(146,82,586,781),10290=>array(146,82,586,504),10291=>array(146,82,586,781),10292=>array(146,82,586,504),10293=>array(146,82,586,781),10294=>array(146,82,586,504),10295=>array(146,82,586,781),10296=>array(439,82,586,781),10297=>array(146,82,586,781),10298=>array(146,82,586,781),10299=>array(146,82,586,781),10300=>array(146,82,586,781),10301=>array(146,82,586,781),10302=>array(146,82,586,781),10303=>array(146,82,586,781),10304=>array(146,-195,293,-49),10305=>array(146,-195,293,781),10306=>array(146,-195,293,504),10307=>array(146,-195,293,781),10308=>array(146,-195,293,228),10309=>array(146,-195,293,781),10310=>array(146,-195,293,504),10311=>array(146,-195,293,781),10312=>array(146,-195,586,781),10313=>array(146,-195,586,781),10314=>array(146,-195,586,781),10315=>array(146,-195,586,781),10316=>array(146,-195,586,781),10317=>array(146,-195,586,781),10318=>array(146,-195,586,781),10319=>array(146,-195,586,781),10320=>array(146,-195,586,504),10321=>array(146,-195,586,781),10322=>array(146,-195,586,504),10323=>array(146,-195,586,781),10324=>array(146,-195,586,504),10325=>array(146,-195,586,781),10326=>array(146,-195,586,504),10327=>array(146,-195,586,781),10328=>array(146,-195,586,781),10329=>array(146,-195,586,781),10330=>array(146,-195,586,781),10331=>array(146,-195,586,781),10332=>array(146,-195,586,781),10333=>array(146,-195,586,781),10334=>array(146,-195,586,781),10335=>array(146,-195,586,781),10336=>array(146,-195,586,228),10337=>array(146,-195,586,781),10338=>array(146,-195,586,504),10339=>array(146,-195,586,781),10340=>array(146,-195,586,228),10341=>array(146,-195,586,781),10342=>array(146,-195,586,504),10343=>array(146,-195,586,781),10344=>array(146,-195,586,781),10345=>array(146,-195,586,781),10346=>array(146,-195,586,781),10347=>array(146,-195,586,781),10348=>array(146,-195,586,781),10349=>array(146,-195,586,781),10350=>array(146,-195,586,781),10351=>array(146,-195,586,781),10352=>array(146,-195,586,504),10353=>array(146,-195,586,781),10354=>array(146,-195,586,504),10355=>array(146,-195,586,781),10356=>array(146,-195,586,504),10357=>array(146,-195,586,781),10358=>array(146,-195,586,504),10359=>array(146,-195,586,781),10360=>array(146,-195,586,781),10361=>array(146,-195,586,781),10362=>array(146,-195,586,781),10363=>array(146,-195,586,781),10364=>array(146,-195,586,781),10365=>array(146,-195,586,781),10366=>array(146,-195,586,781),10367=>array(146,-195,586,781),10368=>array(439,-195,586,-49),10369=>array(146,-195,586,781),10370=>array(146,-195,586,504),10371=>array(146,-195,586,781),10372=>array(146,-195,586,228),10373=>array(146,-195,586,781),10374=>array(146,-195,586,504),10375=>array(146,-195,586,781),10376=>array(439,-195,586,781),10377=>array(146,-195,586,781),10378=>array(146,-195,586,781),10379=>array(146,-195,586,781),10380=>array(146,-195,586,781),10381=>array(146,-195,586,781),10382=>array(146,-195,586,781),10383=>array(146,-195,586,781),10384=>array(439,-195,586,504),10385=>array(146,-195,586,781),10386=>array(146,-195,586,504),10387=>array(146,-195,586,781),10388=>array(146,-195,586,504),10389=>array(146,-195,586,781),10390=>array(146,-195,586,504),10391=>array(146,-195,586,781),10392=>array(439,-195,586,781),10393=>array(146,-195,586,781),10394=>array(146,-195,586,781),10395=>array(146,-195,586,781),10396=>array(146,-195,586,781),10397=>array(146,-195,586,781),10398=>array(146,-195,586,781),10399=>array(146,-195,586,781),10400=>array(439,-195,586,228),10401=>array(146,-195,586,781),10402=>array(146,-195,586,504),10403=>array(146,-195,586,781),10404=>array(146,-195,586,228),10405=>array(146,-195,586,781),10406=>array(146,-195,586,504),10407=>array(146,-195,586,781),10408=>array(439,-195,586,781),10409=>array(146,-195,586,781),10410=>array(146,-195,586,781),10411=>array(146,-195,586,781),10412=>array(146,-195,586,781),10413=>array(146,-195,586,781),10414=>array(146,-195,586,781),10415=>array(146,-195,586,781),10416=>array(439,-195,586,504),10417=>array(146,-195,586,781),10418=>array(146,-195,586,504),10419=>array(146,-195,586,781),10420=>array(146,-195,586,504),10421=>array(146,-195,586,781),10422=>array(146,-195,586,504),10423=>array(146,-195,586,781),10424=>array(439,-195,586,781),10425=>array(146,-195,586,781),10426=>array(146,-195,586,781),10427=>array(146,-195,586,781),10428=>array(146,-195,586,781),10429=>array(146,-195,586,781),10430=>array(146,-195,586,781),10431=>array(146,-195,586,781),10432=>array(146,-195,586,-49),10433=>array(146,-195,586,781),10434=>array(146,-195,586,504),10435=>array(146,-195,586,781),10436=>array(146,-195,586,228),10437=>array(146,-195,586,781),10438=>array(146,-195,586,504),10439=>array(146,-195,586,781),10440=>array(146,-195,586,781),10441=>array(146,-195,586,781),10442=>array(146,-195,586,781),10443=>array(146,-195,586,781),10444=>array(146,-195,586,781),10445=>array(146,-195,586,781),10446=>array(146,-195,586,781),10447=>array(146,-195,586,781),10448=>array(146,-195,586,504),10449=>array(146,-195,586,781),10450=>array(146,-195,586,504),10451=>array(146,-195,586,781),10452=>array(146,-195,586,504),10453=>array(146,-195,586,781),10454=>array(146,-195,586,504),10455=>array(146,-195,586,781),10456=>array(146,-195,586,781),10457=>array(146,-195,586,781),10458=>array(146,-195,586,781),10459=>array(146,-195,586,781),10460=>array(146,-195,586,781),10461=>array(146,-195,586,781),10462=>array(146,-195,586,781),10463=>array(146,-195,586,781),10464=>array(146,-195,586,228),10465=>array(146,-195,586,781),10466=>array(146,-195,586,504),10467=>array(146,-195,586,781),10468=>array(146,-195,586,228),10469=>array(146,-195,586,781),10470=>array(146,-195,586,504),10471=>array(146,-195,586,781),10472=>array(146,-195,586,781),10473=>array(146,-195,586,781),10474=>array(146,-195,586,781),10475=>array(146,-195,586,781),10476=>array(146,-195,586,781),10477=>array(146,-195,586,781),10478=>array(146,-195,586,781),10479=>array(146,-195,586,781),10480=>array(146,-195,586,504),10481=>array(146,-195,586,781),10482=>array(146,-195,586,504),10483=>array(146,-195,586,781),10484=>array(146,-195,586,504),10485=>array(146,-195,586,781),10486=>array(146,-195,586,504),10487=>array(146,-195,586,781),10488=>array(146,-195,586,781),10489=>array(146,-195,586,781),10490=>array(146,-195,586,781),10491=>array(146,-195,586,781),10492=>array(146,-195,586,781),10493=>array(146,-195,586,781),10494=>array(146,-195,586,781),10495=>array(146,-195,586,781),10502=>array(49,100,781,527),10503=>array(57,100,789,527),10506=>array(125,0,713,732),10507=>array(125,-3,713,729),10560=>array(39,63,644,838),10561=>array(39,63,644,838),10627=>array(125,-163,609,760),10628=>array(125,-163,609,760),10702=>array(106,-226,732,747),10703=>array(106,15,894,612),10704=>array(106,15,894,612),10705=>array(106,-30,894,657),10706=>array(106,-30,894,657),10707=>array(106,-30,894,657),10708=>array(106,-30,894,657),10709=>array(106,-30,894,657),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-198,972,748),10753=>array(28,-198,972,748),10754=>array(28,-198,972,748),10764=>array(57,-212,1268,757),10765=>array(57,-212,464,757),10766=>array(57,-212,464,757),10767=>array(57,-212,464,757),10768=>array(57,-212,464,757),10769=>array(57,-212,522,757),10770=>array(57,-212,464,757),10771=>array(57,-212,464,757),10772=>array(57,-212,555,757),10773=>array(57,-212,464,757),10774=>array(57,-212,464,757),10775=>array(-32,-212,553,757),10776=>array(57,-212,464,757),10777=>array(57,-212,464,757),10778=>array(57,-212,464,757),10779=>array(57,-212,469,872),10780=>array(52,-327,464,757),10799=>array(137,31,701,596),10858=>array(106,228,732,552),10859=>array(106,78,732,552),10877=>array(106,-123,732,581),10878=>array(106,-123,732,581),10879=>array(106,-123,733,581),10880=>array(106,-123,732,581),10881=>array(106,-123,732,644),10882=>array(106,-123,732,644),10883=>array(106,-123,733,759),10884=>array(106,-123,732,756),10885=>array(106,-132,732,663),10886=>array(106,-132,732,663),10887=>array(106,-121,732,582),10888=>array(106,-121,732,582),10889=>array(106,-204,732,663),10890=>array(106,-204,732,663),10891=>array(106,-311,732,791),10892=>array(106,-311,732,791),10893=>array(106,-124,732,663),10894=>array(106,-124,732,663),10895=>array(106,-241,732,756),10896=>array(106,-241,732,756),10897=>array(106,-229,732,730),10898=>array(106,-229,732,730),10899=>array(106,-224,732,741),10900=>array(106,-224,732,741),10901=>array(106,-61,732,644),10902=>array(106,-61,732,644),10903=>array(106,-61,733,644),10904=>array(106,-61,732,644),10905=>array(106,-36,732,685),10906=>array(106,-36,732,685),10907=>array(106,-31,732,725),10908=>array(106,-31,732,725),10909=>array(106,8,732,645),10910=>array(106,23,732,645),10911=>array(106,-176,732,729),10912=>array(106,-176,732,729),10926=>array(106,50,732,601),10927=>array(106,-24,732,667),10928=>array(106,-24,732,667),10929=>array(106,-145,732,667),10930=>array(106,-145,732,667),10931=>array(106,-121,732,662),10932=>array(106,-121,732,662),10933=>array(106,-195,732,662),10934=>array(106,-195,732,662),10935=>array(106,-191,732,693),10936=>array(106,-191,732,693),10937=>array(106,-259,732,693),10938=>array(106,-259,732,693),11001=>array(106,-171,732,585),11002=>array(106,-171,732,585),11008=>array(88,-27,703,587),11009=>array(141,-27,755,587),11010=>array(88,25,703,640),11011=>array(141,25,755,640),11012=>array(27,65,789,562),11013=>array(27,65,781,562),11014=>array(171,0,667,754),11015=>array(171,-25,667,729),11016=>array(88,-27,703,587),11017=>array(141,-27,755,587),11018=>array(88,25,703,640),11019=>array(141,25,755,640),11020=>array(27,65,789,562),11021=>array(171,-25,667,754),11022=>array(57,-3,790,355),11023=>array(57,272,790,630),11024=>array(35,-3,768,355),11025=>array(35,272,768,630),11026=>array(91,-123,854,643),11027=>array(91,-123,854,643),11028=>array(91,-123,854,643),11029=>array(91,-123,854,643),11030=>array(3,-123,766,643),11031=>array(3,-123,766,643),11032=>array(3,-123,766,643),11033=>array(3,-123,766,643),11034=>array(91,-123,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(5,0,552,729),11361=>array(5,0,271,760),11362=>array(-20,0,552,729),11363=>array(5,0,569,729),11364=>array(98,-200,666,729),11365=>array(35,-46,576,592),11366=>array(-12,-93,384,822),11367=>array(98,-157,752,729),11368=>array(91,-138,639,760),11369=>array(98,-157,677,729),11370=>array(91,-138,576,760),11371=>array(45,-157,738,729),11372=>array(43,-138,572,547),11373=>array(56,-14,683,743),11374=>array(98,-200,765,729),11375=>array(8,0,676,729),11376=>array(56,-14,683,743),11377=>array(30,0,734,560),11378=>array(33,0,1128,742),11379=>array(42,0,961,560),11380=>array(51,0,562,587),11381=>array(98,0,555,729),11382=>array(94,0,477,547),11383=>array(55,-12,602,551),11385=>array(0,-13,320,760),11386=>array(55,-14,557,560),11387=>array(48,0,400,547),11388=>array(-11,-117,116,425),11389=>array(5,326,426,734),11390=>array(66,-242,598,742),11391=>array(45,-242,640,729),11520=>array(60,-63,544,547),11521=>array(24,-235,556,546),11522=>array(39,-235,535,546),11523=>array(62,-10,572,807),11524=>array(51,-235,537,546),11525=>array(39,-236,862,546),11526=>array(0,-8,575,816),11527=>array(53,0,900,546),11528=>array(69,0,542,546),11529=>array(51,-235,556,816),11530=>array(39,0,903,546),11531=>array(53,-8,595,816),11532=>array(39,0,544,816),11533=>array(51,0,887,546),11534=>array(51,0,556,546),11535=>array(69,-235,767,816),11536=>array(51,0,880,816),11537=>array(51,0,545,816),11538=>array(50,-235,536,546),11539=>array(51,-235,884,661),11540=>array(60,-235,892,546),11541=>array(49,-235,784,816),11542=>array(39,0,545,546),11543=>array(51,-235,556,547),11544=>array(51,-235,551,546),11545=>array(39,-235,541,816),11546=>array(42,-235,532,547),11547=>array(60,-9,596,816),11548=>array(39,-235,870,547),11549=>array(29,-235,545,546),11550=>array(47,-235,547,546),11551=>array(34,-235,547,567),11552=>array(39,0,875,546),11553=>array(49,-235,544,816),11554=>array(60,0,538,626),11555=>array(61,-235,553,816),11556=>array(51,-235,603,546),11557=>array(60,-8,841,816),11568=>array(55,-14,591,380),11569=>array(56,-14,832,742),11570=>array(56,-14,832,742),11571=>array(31,0,651,729),11572=>array(33,0,652,729),11573=>array(31,0,604,729),11574=>array(73,0,488,729),11575=>array(8,0,676,729),11576=>array(8,0,676,729),11577=>array(98,0,568,729),11578=>array(64,0,534,729),11579=>array(73,-14,609,742),11580=>array(107,0,811,729),11581=>array(45,0,665,729),11582=>array(73,0,437,729),11583=>array(45,0,665,729),11584=>array(56,-14,832,742),11585=>array(56,-52,832,781),11586=>array(73,0,197,729),11587=>array(20,0,610,729),11588=>array(98,0,654,729),11589=>array(30,0,654,729),11590=>array(73,0,454,729),11591=>array(45,0,629,729),11592=>array(73,301,571,426),11593=>array(98,0,568,729),11594=>array(54,0,448,729),11595=>array(54,-15,899,742),11596=>array(54,0,725,729),11597=>array(98,0,650,729),11598=>array(100,0,566,729),11599=>array(98,0,197,729),11600=>array(54,0,725,729),11601=>array(98,0,198,729),11602=>array(78,-14,705,729),11603=>array(48,-14,584,742),11604=>array(56,-14,832,742),11605=>array(56,-54,832,742),11606=>array(98,0,654,729),11607=>array(98,0,222,729),11608=>array(73,0,676,729),11609=>array(56,-14,832,742),11610=>array(56,-14,832,780),11611=>array(56,-14,681,742),11612=>array(49,0,719,729),11613=>array(30,0,654,729),11614=>array(56,-14,681,742),11615=>array(98,0,568,729),11616=>array(8,0,676,729),11617=>array(98,0,654,729),11618=>array(98,0,559,729),11619=>array(56,0,732,729),11620=>array(98,0,495,729),11621=>array(56,0,732,729),11631=>array(26,522,489,729),11800=>array(70,-14,459,728),11806=>array(106,78,732,399),11810=>array(86,403,293,760),11811=>array(97,403,304,760),11812=>array(86,-132,293,225),11813=>array(97,-132,304,225),11822=>array(72,0,461,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(98,0,615,729),42193=>array(98,0,569,729),42194=>array(34,0,505,729),42195=>array(98,0,711,729),42196=>array(-3,0,614,729),42197=>array(-3,0,614,729),42198=>array(56,-14,693,742),42199=>array(98,0,677,729),42200=>array(-21,0,558,729),42201=>array(0,-14,414,729),42202=>array(56,-14,644,742),42203=>array(56,-14,644,742),42204=>array(45,0,640,729),42205=>array(98,0,517,729),42206=>array(98,0,517,729),42207=>array(98,0,765,729),42208=>array(98,0,650,729),42209=>array(98,0,552,729),42210=>array(66,-14,579,742),42211=>array(98,0,666,729),42212=>array(29,0,597,729),42213=>array(8,0,676,729),42214=>array(8,0,676,729),42215=>array(98,0,654,729),42216=>array(80,-14,716,742),42217=>array(98,0,512,743),42218=>array(33,0,956,729),42219=>array(30,0,654,729),42220=>array(-2,0,613,729),42221=>array(71,0,588,729),42222=>array(8,0,676,729),42223=>array(8,0,676,729),42224=>array(98,0,568,729),42225=>array(64,0,534,729),42226=>array(98,0,197,729),42227=>array(56,-14,731,742),42228=>array(87,-14,645,729),42229=>array(87,0,645,743),42230=>array(4,0,458,729),42231=>array(56,0,669,729),42232=>array(85,0,214,155),42233=>array(71,-156,214,155),42234=>array(85,0,511,155),42235=>array(85,-156,511,155),42236=>array(71,-156,214,517),42237=>array(85,0,214,517),42238=>array(85,0,502,354),42239=>array(85,172,502,454),42564=>array(56,-14,569,742),42565=>array(49,-14,467,560),42566=>array(98,0,347,729),42567=>array(81,0,304,547),42572=>array(58,-14,1122,645),42573=>array(74,-14,954,471),42576=>array(29,0,931,729),42577=>array(30,0,817,560),42580=>array(56,-14,977,742),42581=>array(55,-14,748,560),42582=>array(103,0,968,729),42583=>array(94,-14,752,560),42594=>array(49,-157,1004,729),42595=>array(52,-138,863,547),42596=>array(41,0,1008,729),42597=>array(37,0,852,547),42598=>array(98,0,1120,729),42599=>array(91,0,959,547),42600=>array(56,-14,731,742),42601=>array(55,-14,557,560),42602=>array(56,-14,799,742),42603=>array(55,-14,658,560),42604=>array(56,-14,1302,742),42605=>array(55,-14,964,560),42606=>array(28,-208,851,743),42634=>array(-3,-200,758,729),42635=>array(29,-208,660,547),42636=>array(-3,0,614,729),42637=>array(29,0,553,547),42644=>array(85,0,587,729),42645=>array(91,0,549,760),42760=>array(104,0,389,668),42761=>array(104,0,389,668),42762=>array(104,0,389,668),42763=>array(104,0,389,668),42764=>array(104,0,389,668),42765=>array(104,0,389,668),42766=>array(104,0,389,668),42767=>array(104,0,389,668),42768=>array(104,0,389,668),42769=>array(104,0,389,668),42770=>array(104,0,389,668),42771=>array(104,0,389,668),42772=>array(104,0,389,668),42773=>array(104,0,389,668),42774=>array(104,0,389,668),42779=>array(50,326,319,736),42780=>array(50,324,319,734),42781=>array(95,326,158,734),42782=>array(95,326,158,734),42783=>array(95,0,158,408),42786=>array(67,0,350,729),42787=>array(67,0,321,547),42788=>array(56,224,411,742),42789=>array(56,42,411,560),42790=>array(98,-200,654,729),42791=>array(91,-208,549,760),42792=>array(-3,-213,819,729),42793=>array(27,-213,650,702),42794=>array(80,-14,560,742),42795=>array(65,-200,473,561),42800=>array(91,0,437,547),42801=>array(54,-14,472,560),42802=>array(8,0,1241,729),42803=>array(60,-14,894,560),42804=>array(8,-14,1147,742),42805=>array(60,-14,935,560),42806=>array(8,-14,1055,729),42807=>array(60,-14,890,560),42808=>array(8,0,963,729),42809=>array(60,-14,788,560),42810=>array(8,0,963,729),42811=>array(60,-14,788,560),42812=>array(8,-208,951,729),42813=>array(60,-208,788,560),42814=>array(56,-14,644,742),42815=>array(62,-14,495,560),42816=>array(5,0,677,729),42817=>array(7,0,580,760),42822=>array(98,0,675,729),42823=>array(94,0,298,760),42824=>array(41,0,576,729),42825=>array(59,0,368,760),42826=>array(5,-14,802,742),42827=>array(5,-14,694,560),42830=>array(56,-14,1302,742),42831=>array(55,-14,964,560),42832=>array(5,0,569,729),42833=>array(-2,-208,580,560),42834=>array(24,0,700,729),42835=>array(24,-208,720,560),42838=>array(56,-178,731,742),42839=>array(55,-208,637,560),42852=>array(5,0,569,729),42853=>array(-2,-208,580,760),42854=>array(5,0,569,729),42855=>array(-2,-208,580,760),42880=>array(5,0,459,729),42881=>array(94,-208,184,560),42882=>array(98,-208,637,742),42883=>array(91,-208,549,560),42889=>array(117,0,220,517),42890=>array(78,161,298,380),42891=>array(151,235,250,729),42892=>array(96,458,179,729),42893=>array(85,0,587,729),42894=>array(38,-208,416,760),42896=>array(98,-157,733,729),42897=>array(91,-138,621,560),42912=>array(2,-14,778,742),42913=>array(2,-208,633,560),42914=>array(2,0,677,729),42915=>array(2,0,577,760),42916=>array(2,0,746,729),42917=>array(2,0,633,560),42918=>array(2,0,693,729),42919=>array(2,0,411,560),42920=>array(2,-14,633,742),42921=>array(2,-14,519,560),42922=>array(-51,0,703,729),43002=>array(91,0,824,547),43003=>array(58,0,477,729),43004=>array(34,0,505,729),43005=>array(98,0,765,729),43006=>array(98,0,197,928),43007=>array(33,0,1167,729),61184=>array(95,602,323,668),61185=>array(69,451,342,668),61186=>array(54,301,361,668),61187=>array(47,150,368,668),61188=>array(44,0,372,668),61189=>array(69,451,342,668),61190=>array(95,451,323,518),61191=>array(69,301,342,518),61192=>array(54,150,361,518),61193=>array(47,0,368,518),61194=>array(54,301,361,668),61195=>array(69,301,342,518),61196=>array(95,301,323,367),61197=>array(69,150,342,367),61198=>array(54,0,361,367),61199=>array(47,150,368,668),61200=>array(54,150,361,518),61201=>array(69,150,342,367),61202=>array(95,150,323,217),61203=>array(69,0,342,217),61204=>array(44,0,372,668),61205=>array(47,0,368,518),61206=>array(54,0,361,367),61207=>array(69,0,342,217),61208=>array(95,0,323,66),61209=>array(104,0,171,668),61440=>array(73,0,903,732),61441=>array(73,0,903,732),61442=>array(73,0,903,732),61443=>array(73,0,903,732),62464=>array(54,-15,526,828),62465=>array(54,-15,526,828),62466=>array(54,-15,570,837),62467=>array(54,0,835,837),62468=>array(54,-15,526,837),62469=>array(54,-15,526,837),62470=>array(54,-15,599,837),62471=>array(54,-15,828,837),62472=>array(54,0,501,837),62473=>array(54,-15,526,828),62474=>array(54,0,1115,837),62475=>array(54,-15,525,837),62476=>array(63,-15,536,828),62477=>array(54,0,815,837),62478=>array(54,-15,526,828),62479=>array(54,-15,526,844),62480=>array(54,0,860,837),62481=>array(63,-15,536,828),62482=>array(54,-15,677,837),62483=>array(24,-15,519,837),62484=>array(54,-15,818,837),62485=>array(54,-15,526,828),62486=>array(54,-15,841,837),62487=>array(54,-15,525,829),62488=>array(54,-15,525,837),62489=>array(64,0,536,837),62490=>array(55,-15,595,828),62491=>array(54,-15,525,828),62492=>array(64,-15,536,837),62493=>array(54,-15,545,828),62494=>array(63,-15,536,828),62495=>array(24,-15,492,837),62496=>array(54,-15,526,837),62497=>array(59,-15,530,837),62498=>array(54,-79,526,837),62499=>array(54,-15,525,838),62500=>array(54,-15,532,838),62501=>array(54,-15,594,837),62502=>array(54,-15,901,838),62504=>array(60,-235,872,816),62505=>array(49,-230,759,853),62506=>array(49,-15,459,765),62507=>array(49,-15,459,777),62508=>array(49,-15,459,875),62509=>array(49,-15,459,818),62510=>array(49,-15,459,887),62511=>array(49,-15,459,809),62512=>array(49,-236,449,765),62513=>array(49,-236,449,799),62514=>array(49,-236,449,901),62515=>array(49,-236,449,809),62516=>array(49,0,469,765),62517=>array(49,0,469,799),62518=>array(49,0,469,809),62519=>array(49,-0,737,765),62520=>array(49,-0,737,777),62521=>array(49,-0,737,895),62522=>array(49,-0,737,799),62523=>array(49,-0,737,809),62524=>array(29,-236,488,765),62525=>array(29,-236,488,777),62526=>array(29,-236,488,904),62527=>array(29,-236,488,799),62528=>array(29,-236,488,809),62529=>array(29,-236,488,852),63173=>array(55,-14,557,760),64256=>array(23,0,708,760),64257=>array(23,0,536,760),64258=>array(23,0,536,760),64259=>array(23,0,873,760),64260=>array(23,0,873,760),64261=>array(23,0,662,760),64262=>array(54,-14,837,742),64275=>array(83,-14,1111,760),64276=>array(85,-14,1111,760),64277=>array(85,-208,1111,760),64278=>array(85,-208,1111,760),64279=>array(85,-208,1451,760),64285=>array(66,44,157,547),64286=>array(167,625,473,765),64287=>array(36,44,329,547),64288=>array(38,0,562,547),64289=>array(85,0,772,547),64290=>array(43,0,717,547),64291=>array(91,0,764,547),64292=>array(43,0,716,547),64293=>array(43,0,716,760),64294=>array(91,0,764,547),64295=>array(43,0,716,547),64296=>array(47,-4,716,547),64297=>array(106,272,732,627),64298=>array(43,0,666,698),64299=>array(38,0,666,698),64300=>array(43,0,666,698),64301=>array(43,0,666,698),64302=>array(91,-159,578,547),64303=>array(91,-193,578,547),64304=>array(91,-159,578,547),64305=>array(43,0,535,547),64306=>array(43,-5,383,547),64307=>array(43,0,511,547),64308=>array(91,0,563,547),64309=>array(43,0,265,547),64310=>array(43,0,363,547),64312=>array(90,-14,593,552),64313=>array(43,204,264,547),64314=>array(43,-208,446,547),64315=>array(43,0,474,547),64316=>array(43,0,492,729),64318=>array(43,0,588,555),64320=>array(43,0,309,547),64321=>array(90,-14,593,547),64323=>array(91,-208,549,547),64324=>array(91,0,569,547),64326=>array(43,0,502,547),64327=>array(91,-208,633,546),64328=>array(43,0,474,547),64329=>array(43,0,666,547),64330=>array(10,-4,566,547),64331=>array(91,0,182,698),64332=>array(43,0,535,698),64333=>array(43,0,474,698),64334=>array(91,0,569,698),64335=>array(43,0,571,760),64338=>array(63,-244,865,327),64339=>array(63,-244,992,327),64340=>array(-10,-244,191,293),64341=>array(-10,-244,312,293),64342=>array(63,-244,865,327),64343=>array(63,-244,992,327),64344=>array(-10,-244,244,293),64345=>array(-10,-244,312,293),64346=>array(63,-244,865,327),64347=>array(63,-244,992,327),64348=>array(-10,-244,244,293),64349=>array(-10,-244,312,293),64350=>array(63,-10,865,513),64351=>array(63,-10,992,513),64352=>array(-10,0,191,610),64353=>array(-10,0,312,610),64354=>array(63,-10,865,513),64355=>array(63,-10,992,513),64356=>array(-10,0,244,610),64357=>array(-10,0,312,610),64358=>array(63,-10,865,575),64359=>array(63,-10,992,575),64360=>array(-10,0,273,672),64361=>array(-10,0,312,672),64362=>array(63,-45,952,757),64363=>array(63,-44,1045,659),64364=>array(-10,0,406,757),64365=>array(-10,0,516,684),64366=>array(63,-45,952,757),64367=>array(63,-44,1045,659),64368=>array(-10,0,406,757),64369=>array(-10,0,516,684),64370=>array(77,-244,645,425),64371=>array(77,-244,655,425),64372=>array(-10,-220,545,398),64373=>array(-10,-220,655,398),64374=>array(77,-244,645,425),64375=>array(77,-244,655,425),64376=>array(-10,-98,545,398),64377=>array(-10,-98,655,398),64378=>array(77,-244,645,425),64379=>array(77,-244,655,425),64380=>array(-10,-220,545,398),64381=>array(-10,-220,655,398),64382=>array(77,-244,645,425),64383=>array(77,-244,655,425),64384=>array(-10,-220,545,398),64385=>array(-10,-220,655,398),64386=>array(61,-146,388,415),64387=>array(61,-146,535,415),64388=>array(61,-19,388,586),64389=>array(61,-19,535,586),64390=>array(61,-19,388,708),64391=>array(61,-19,535,708),64392=>array(61,-19,388,746),64393=>array(61,-19,535,746),64394=>array(-42,-244,439,586),64395=>array(-42,-244,562,586),64396=>array(-42,-244,469,648),64397=>array(-42,-244,562,648),64398=>array(63,-43,895,760),64399=>array(63,-43,981,760),64400=>array(-10,0,476,760),64401=>array(-10,0,562,760),64402=>array(63,-43,895,896),64403=>array(63,-43,981,896),64404=>array(-10,0,476,896),64405=>array(-10,0,562,896),64406=>array(63,-293,895,896),64407=>array(63,-293,981,896),64408=>array(-10,-269,476,896),64409=>array(-10,-269,562,896),64410=>array(63,-43,895,903),64411=>array(63,-43,981,903),64412=>array(-10,0,476,903),64413=>array(-10,0,562,903),64414=>array(72,-162,660,366),64415=>array(72,-244,771,284),64416=>array(72,-162,660,636),64417=>array(72,-244,771,514),64418=>array(-10,0,273,672),64419=>array(-10,0,312,672),64426=>array(70,-33,638,487),64427=>array(70,-244,642,333),64428=>array(-10,-33,467,487),64429=>array(-10,-244,471,333),64467=>array(70,-27,722,854),64468=>array(70,-27,853,854),64469=>array(-10,0,476,928),64470=>array(-10,0,562,928),64473=>array(-42,-244,406,556),64474=>array(-42,-244,526,556),64488=>array(-10,0,191,293),64489=>array(-10,0,312,293),64508=>array(63,-131,719,411),64509=>array(63,-133,843,251),64510=>array(-10,-146,244,293),64511=>array(-10,-146,312,293),65056=>array(-445,752,0,929),65057=>array(0,752,445,929),65058=>array(-354,756,0,894),65059=>array(0,756,354,894),65136=>array(4,591,289,825),65137=>array(-10,0,303,825),65138=>array(4,591,289,874),65139=>array(51,0,271,177),65140=>array(4,-239,289,-5),65142=>array(4,591,289,708),65143=>array(-10,0,303,708),65144=>array(4,590,289,874),65145=>array(-10,0,303,874),65146=>array(4,-137,289,-20),65147=>array(-10,-137,303,90),65148=>array(-6,599,299,869),65149=>array(-10,0,303,869),65150=>array(12,610,279,878),65151=>array(-10,0,303,878),65152=>array(80,42,390,483),65153=>array(-37,0,315,939),65154=>array(-37,0,315,939),65155=>array(53,0,220,1028),65156=>array(53,0,314,1028),65157=>array(-42,-244,406,588),65158=>array(-42,-244,526,588),65159=>array(53,-244,220,760),65160=>array(53,-244,314,760),65161=>array(63,-131,719,588),65162=>array(63,-133,843,466),65163=>array(-10,0,227,613),65164=>array(-10,0,312,613),65165=>array(94,0,184,760),65166=>array(94,0,314,760),65167=>array(63,-171,865,327),65168=>array(63,-171,992,327),65169=>array(-10,-146,191,293),65170=>array(-10,-146,312,293),65171=>array(68,-28,453,513),65172=>array(71,0,546,513),65173=>array(63,-10,865,391),65174=>array(63,-10,992,391),65175=>array(-10,0,244,488),65176=>array(-10,0,312,488),65177=>array(63,-10,865,513),65178=>array(63,-10,992,513),65179=>array(-10,0,244,610),65180=>array(-10,0,312,610),65181=>array(77,-244,645,425),65182=>array(77,-244,655,425),65183=>array(-10,-146,545,398),65184=>array(-10,-146,655,398),65185=>array(77,-244,645,425),65186=>array(77,-244,655,425),65187=>array(-10,0,545,398),65188=>array(-10,0,655,398),65189=>array(77,-244,645,586),65190=>array(77,-244,655,586),65191=>array(-10,0,545,537),65192=>array(-10,0,655,537),65193=>array(61,-19,388,415),65194=>array(61,-19,535,415),65195=>array(61,-19,388,586),65196=>array(61,-19,535,586),65197=>array(-42,-244,423,269),65198=>array(-42,-244,562,269),65199=>array(-42,-244,423,464),65200=>array(-42,-244,562,464),65201=>array(63,-244,1138,366),65202=>array(63,-244,1285,366),65203=>array(-10,-14,755,366),65204=>array(-10,-14,902,366),65205=>array(63,-244,1138,586),65206=>array(63,-244,1285,586),65207=>array(-10,-14,755,586),65208=>array(-10,-14,902,586),65209=>array(63,-244,1134,362),65210=>array(63,-244,1235,362),65211=>array(-10,0,774,362),65212=>array(-10,0,877,362),65213=>array(63,-244,1134,464),65214=>array(63,-244,1235,464),65215=>array(-10,0,774,464),65216=>array(-10,0,877,464),65217=>array(70,0,857,760),65218=>array(70,0,959,760),65219=>array(-10,0,729,760),65220=>array(-10,0,830,760),65221=>array(70,0,857,760),65222=>array(70,0,959,760),65223=>array(-10,0,729,760),65224=>array(-10,0,830,760),65225=>array(57,-244,587,521),65226=>array(57,-244,587,382),65227=>array(-10,0,496,521),65228=>array(-10,0,492,382),65229=>array(57,-244,587,659),65230=>array(57,-244,587,537),65231=>array(-10,0,496,659),65232=>array(-10,0,492,537),65233=>array(63,-45,952,635),65234=>array(63,-44,1045,537),65235=>array(-10,0,406,635),65236=>array(-10,0,516,562),65237=>array(52,-215,701,635),65238=>array(52,-244,844,500),65239=>array(-10,0,406,635),65240=>array(-10,0,516,562),65241=>array(70,-27,722,760),65242=>array(70,-27,853,760),65243=>array(-10,0,476,760),65244=>array(-10,0,562,760),65245=>array(70,-152,637,760),65246=>array(70,-152,767,760),65247=>array(-10,0,210,760),65248=>array(-10,0,341,760),65249=>array(68,-240,546,369),65250=>array(68,-240,675,307),65251=>array(-10,-25,456,303),65252=>array(-10,-24,588,303),65253=>array(72,-162,660,464),65254=>array(72,-244,771,342),65255=>array(-10,0,191,488),65256=>array(-10,0,312,488),65257=>array(68,-28,453,358),65258=>array(71,0,546,366),65259=>array(-10,-33,467,487),65260=>array(-10,-244,471,333),65261=>array(-42,-244,406,315),65262=>array(-42,-244,526,315),65263=>array(63,-131,719,411),65264=>array(63,-133,843,251),65265=>array(63,-244,719,411),65266=>array(63,-244,843,251),65267=>array(-10,-146,244,293),65268=>array(-10,-146,312,293),65269=>array(-103,-10,468,866),65270=>array(-103,-10,606,866),65271=>array(-13,-10,468,955),65272=>array(-13,-10,606,955),65273=>array(11,-244,468,760),65274=>array(11,-244,606,760),65275=>array(41,-10,468,760),65276=>array(41,-10,606,760),65533=>array(15,-84,1011,912),65535=>array(50,-177,550,705)); -$cw=array(0=>600,32=>318,33=>401,34=>460,35=>838,36=>636,37=>950,38=>780,39=>275,40=>390,41=>390,42=>500,43=>838,44=>318,45=>361,46=>318,47=>337,48=>636,49=>636,50=>636,51=>636,52=>636,53=>636,54=>636,55=>636,56=>636,57=>636,58=>337,59=>337,60=>838,61=>838,62=>838,63=>531,64=>1000,65=>684,66=>686,67=>698,68=>770,69=>632,70=>575,71=>775,72=>752,73=>295,74=>295,75=>656,76=>557,77=>863,78=>748,79=>787,80=>603,81=>787,82=>695,83=>635,84=>611,85=>732,86=>684,87=>989,88=>685,89=>611,90=>685,91=>390,92=>337,93=>390,94=>838,95=>500,96=>500,97=>613,98=>635,99=>550,100=>635,101=>615,102=>352,103=>635,104=>634,105=>278,106=>278,107=>579,108=>278,109=>974,110=>634,111=>612,112=>635,113=>635,114=>411,115=>521,116=>392,117=>634,118=>592,119=>818,120=>592,121=>592,122=>525,123=>636,124=>337,125=>636,126=>838,160=>318,161=>401,162=>636,163=>636,164=>636,165=>636,166=>337,167=>500,168=>500,169=>1000,170=>471,171=>612,172=>838,173=>361,174=>1000,175=>500,176=>500,177=>838,178=>401,179=>401,180=>500,181=>636,182=>636,183=>318,184=>500,185=>401,186=>471,187=>612,188=>969,189=>969,190=>969,191=>531,192=>684,193=>684,194=>684,195=>684,196=>684,197=>684,198=>974,199=>698,200=>632,201=>632,202=>632,203=>632,204=>295,205=>295,206=>295,207=>295,208=>775,209=>748,210=>787,211=>787,212=>787,213=>787,214=>787,215=>838,216=>787,217=>732,218=>732,219=>732,220=>732,221=>611,222=>605,223=>630,224=>613,225=>613,226=>613,227=>613,228=>613,229=>613,230=>982,231=>550,232=>615,233=>615,234=>615,235=>615,236=>278,237=>278,238=>278,239=>278,240=>612,241=>634,242=>612,243=>612,244=>612,245=>612,246=>612,247=>838,248=>612,249=>634,250=>634,251=>634,252=>634,253=>592,254=>635,255=>592,256=>684,257=>613,258=>684,259=>613,260=>684,261=>613,262=>698,263=>550,264=>698,265=>550,266=>698,267=>550,268=>698,269=>550,270=>770,271=>635,272=>775,273=>635,274=>632,275=>615,276=>632,277=>615,278=>632,279=>615,280=>632,281=>615,282=>632,283=>615,284=>775,285=>635,286=>775,287=>635,288=>775,289=>635,290=>775,291=>635,292=>752,293=>634,294=>916,295=>695,296=>295,297=>278,298=>295,299=>278,300=>295,301=>278,302=>295,303=>278,304=>295,305=>278,306=>590,307=>556,308=>295,309=>278,310=>656,311=>579,312=>579,313=>557,314=>278,315=>557,316=>278,317=>557,318=>375,319=>557,320=>342,321=>562,322=>284,323=>748,324=>634,325=>748,326=>634,327=>748,328=>634,329=>813,330=>748,331=>634,332=>787,333=>612,334=>787,335=>612,336=>787,337=>612,338=>1070,339=>1023,340=>695,341=>411,342=>695,343=>411,344=>695,345=>411,346=>635,347=>521,348=>635,349=>521,350=>635,351=>521,352=>635,353=>521,354=>611,355=>392,356=>611,357=>392,358=>611,359=>392,360=>732,361=>634,362=>732,363=>634,364=>732,365=>634,366=>732,367=>634,368=>732,369=>634,370=>732,371=>634,372=>989,373=>818,374=>611,375=>592,376=>611,377=>685,378=>525,379=>685,380=>525,381=>685,382=>525,383=>352,384=>635,385=>735,386=>686,387=>635,388=>686,389=>635,390=>703,391=>698,392=>550,393=>775,394=>819,395=>686,396=>635,397=>612,398=>632,399=>787,400=>614,401=>575,402=>352,403=>775,404=>687,405=>984,406=>354,407=>295,408=>746,409=>579,410=>278,411=>592,412=>974,413=>748,414=>634,415=>787,416=>913,417=>612,418=>949,419=>759,420=>652,421=>635,422=>695,423=>635,424=>521,425=>632,426=>336,427=>392,428=>611,429=>392,430=>611,431=>858,432=>634,433=>764,434=>721,435=>744,436=>730,437=>685,438=>525,439=>666,440=>666,441=>578,442=>525,443=>636,444=>666,445=>578,446=>510,447=>635,448=>295,449=>492,450=>459,451=>295,452=>1422,453=>1299,454=>1154,455=>835,456=>787,457=>457,458=>931,459=>924,460=>797,461=>684,462=>613,463=>295,464=>278,465=>787,466=>612,467=>732,468=>634,469=>732,470=>634,471=>732,472=>634,473=>732,474=>634,475=>732,476=>634,477=>615,478=>684,479=>613,480=>684,481=>613,482=>974,483=>982,484=>775,485=>635,486=>775,487=>635,488=>656,489=>579,490=>787,491=>612,492=>787,493=>612,494=>666,495=>578,496=>278,497=>1422,498=>1299,499=>1154,500=>775,501=>635,502=>1113,503=>682,504=>748,505=>634,506=>684,507=>613,508=>974,509=>982,510=>787,511=>612,512=>684,513=>613,514=>684,515=>613,516=>632,517=>615,518=>632,519=>615,520=>295,521=>278,522=>295,523=>278,524=>787,525=>612,526=>787,527=>612,528=>695,529=>411,530=>695,531=>411,532=>732,533=>634,534=>732,535=>634,536=>635,537=>521,538=>611,539=>392,540=>627,541=>521,542=>752,543=>634,544=>735,545=>838,546=>698,547=>610,548=>685,549=>525,550=>684,551=>613,552=>632,553=>615,554=>787,555=>612,556=>787,557=>612,558=>787,559=>612,560=>787,561=>612,562=>611,563=>592,564=>475,565=>843,566=>477,567=>278,568=>998,569=>998,570=>684,571=>698,572=>550,573=>557,574=>611,575=>521,576=>525,577=>603,578=>479,579=>686,580=>732,581=>684,582=>632,583=>615,584=>295,585=>278,586=>781,587=>635,588=>695,589=>411,590=>611,591=>592,592=>600,593=>635,594=>635,595=>635,596=>549,597=>550,598=>635,599=>696,600=>615,601=>615,602=>819,603=>541,604=>532,605=>775,606=>664,607=>278,608=>696,609=>635,610=>629,611=>596,612=>596,613=>634,614=>634,615=>634,616=>278,617=>338,618=>372,619=>396,620=>487,621=>278,622=>706,623=>974,624=>974,625=>974,626=>646,627=>642,628=>634,629=>612,630=>858,631=>728,632=>660,633=>414,634=>414,635=>414,636=>411,637=>411,638=>530,639=>530,640=>604,641=>604,642=>521,643=>336,644=>336,645=>461,646=>336,647=>392,648=>392,649=>634,650=>618,651=>598,652=>592,653=>818,654=>592,655=>611,656=>525,657=>525,658=>578,659=>578,660=>510,661=>510,662=>510,663=>510,664=>787,665=>580,666=>664,667=>708,668=>654,669=>292,670=>667,671=>507,672=>727,673=>510,674=>510,675=>1014,676=>1058,677=>1013,678=>830,679=>610,680=>778,681=>848,682=>706,683=>654,684=>515,685=>515,686=>661,687=>664,688=>404,689=>399,690=>175,691=>259,692=>295,693=>296,694=>379,695=>515,696=>373,697=>278,698=>460,699=>318,700=>318,701=>318,702=>307,703=>307,704=>370,705=>370,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>275,713=>500,714=>500,715=>500,716=>275,717=>500,718=>500,719=>500,720=>337,721=>337,722=>307,723=>307,724=>500,725=>500,726=>390,727=>317,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>315,735=>500,736=>426,737=>166,738=>373,739=>444,740=>370,741=>493,742=>493,743=>493,744=>493,745=>493,748=>500,749=>500,750=>518,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>654,881=>568,882=>862,883=>647,884=>278,885=>278,886=>748,887=>650,890=>500,891=>549,892=>550,893=>549,894=>337,900=>500,901=>500,902=>692,903=>318,904=>746,905=>871,906=>408,908=>813,910=>825,911=>826,912=>338,913=>684,914=>686,915=>557,916=>684,917=>632,918=>685,919=>752,920=>787,921=>295,922=>656,923=>684,924=>863,925=>748,926=>632,927=>787,928=>752,929=>603,931=>632,932=>611,933=>611,934=>787,935=>685,936=>787,937=>764,938=>295,939=>611,940=>659,941=>541,942=>634,943=>338,944=>579,945=>659,946=>638,947=>592,948=>612,949=>541,950=>544,951=>634,952=>612,953=>338,954=>589,955=>592,956=>636,957=>559,958=>558,959=>612,960=>602,961=>635,962=>587,963=>634,964=>602,965=>579,966=>660,967=>578,968=>660,969=>837,970=>338,971=>579,972=>612,973=>579,974=>837,975=>656,976=>614,977=>619,978=>699,979=>842,980=>699,981=>660,982=>837,983=>664,984=>787,985=>612,986=>648,987=>587,988=>575,989=>458,990=>660,991=>660,992=>865,993=>627,994=>934,995=>837,996=>758,997=>659,998=>792,999=>615,1000=>687,1001=>607,1002=>768,1003=>625,1004=>699,1005=>612,1006=>611,1007=>536,1008=>664,1009=>635,1010=>550,1011=>278,1012=>787,1013=>615,1014=>615,1015=>605,1016=>635,1017=>698,1018=>863,1019=>651,1020=>635,1021=>703,1022=>698,1023=>703,1024=>632,1025=>632,1026=>786,1027=>610,1028=>698,1029=>635,1030=>295,1031=>295,1032=>295,1033=>1094,1034=>1045,1035=>786,1036=>710,1037=>748,1038=>609,1039=>752,1040=>684,1041=>686,1042=>686,1043=>610,1044=>781,1045=>632,1046=>1077,1047=>641,1048=>748,1049=>748,1050=>710,1051=>752,1052=>863,1053=>752,1054=>787,1055=>752,1056=>603,1057=>698,1058=>611,1059=>609,1060=>861,1061=>685,1062=>776,1063=>686,1064=>1069,1065=>1094,1066=>833,1067=>882,1068=>686,1069=>698,1070=>1080,1071=>695,1072=>613,1073=>617,1074=>589,1075=>525,1076=>691,1077=>615,1078=>901,1079=>532,1080=>650,1081=>650,1082=>604,1083=>639,1084=>754,1085=>654,1086=>612,1087=>654,1088=>635,1089=>550,1090=>583,1091=>592,1092=>855,1093=>592,1094=>681,1095=>591,1096=>915,1097=>942,1098=>707,1099=>790,1100=>589,1101=>549,1102=>842,1103=>602,1104=>615,1105=>615,1106=>625,1107=>525,1108=>549,1109=>521,1110=>278,1111=>278,1112=>278,1113=>902,1114=>898,1115=>652,1116=>604,1117=>650,1118=>592,1119=>654,1120=>934,1121=>837,1122=>771,1123=>672,1124=>942,1125=>749,1126=>879,1127=>783,1128=>1160,1129=>1001,1130=>787,1131=>612,1132=>1027,1133=>824,1134=>636,1135=>541,1136=>856,1137=>876,1138=>787,1139=>612,1140=>781,1141=>665,1142=>781,1143=>665,1144=>992,1145=>904,1146=>953,1147=>758,1148=>1180,1149=>1028,1150=>934,1151=>837,1152=>698,1153=>550,1154=>502,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>772,1163=>677,1164=>686,1165=>589,1166=>603,1167=>635,1168=>610,1169=>525,1170=>675,1171=>590,1172=>624,1173=>530,1174=>1077,1175=>901,1176=>641,1177=>532,1178=>710,1179=>604,1180=>710,1181=>604,1182=>710,1183=>604,1184=>856,1185=>832,1186=>752,1187=>661,1188=>1014,1189=>877,1190=>1081,1191=>916,1192=>878,1193=>693,1194=>698,1195=>550,1196=>611,1197=>583,1198=>611,1199=>592,1200=>611,1201=>592,1202=>685,1203=>592,1204=>934,1205=>807,1206=>686,1207=>591,1208=>686,1209=>591,1210=>686,1211=>634,1212=>941,1213=>728,1214=>941,1215=>728,1216=>295,1217=>1077,1218=>901,1219=>656,1220=>604,1221=>776,1222=>670,1223=>752,1224=>661,1225=>776,1226=>681,1227=>686,1228=>591,1229=>888,1230=>774,1231=>278,1232=>684,1233=>613,1234=>684,1235=>613,1236=>974,1237=>982,1238=>632,1239=>615,1240=>787,1241=>615,1242=>787,1243=>615,1244=>1077,1245=>901,1246=>641,1247=>532,1248=>666,1249=>578,1250=>748,1251=>650,1252=>748,1253=>650,1254=>787,1255=>612,1256=>787,1257=>612,1258=>787,1259=>612,1260=>698,1261=>549,1262=>609,1263=>592,1264=>609,1265=>592,1266=>609,1267=>592,1268=>686,1269=>591,1270=>610,1271=>525,1272=>882,1273=>790,1274=>675,1275=>590,1276=>685,1277=>592,1278=>685,1279=>592,1280=>686,1281=>589,1282=>1006,1283=>897,1284=>975,1285=>869,1286=>679,1287=>588,1288=>1072,1289=>957,1290=>1113,1291=>967,1292=>775,1293=>660,1294=>773,1295=>711,1296=>614,1297=>541,1298=>752,1299=>639,1300=>1169,1301=>994,1302=>894,1303=>864,1304=>1032,1305=>986,1306=>787,1307=>635,1308=>989,1309=>818,1310=>710,1311=>604,1312=>1081,1313=>905,1314=>1081,1315=>912,1316=>793,1317=>683,1329=>766,1330=>732,1331=>753,1332=>753,1333=>732,1334=>772,1335=>640,1336=>732,1337=>859,1338=>753,1339=>691,1340=>533,1341=>922,1342=>863,1343=>732,1344=>716,1345=>766,1346=>753,1347=>767,1348=>792,1349=>728,1350=>729,1351=>757,1352=>732,1353=>713,1354=>800,1355=>768,1356=>792,1357=>732,1358=>753,1359=>705,1360=>694,1361=>744,1362=>538,1363=>811,1364=>757,1365=>787,1366=>790,1369=>307,1370=>318,1371=>234,1372=>361,1373=>238,1374=>405,1375=>500,1377=>974,1378=>634,1379=>658,1380=>663,1381=>634,1382=>635,1383=>515,1384=>634,1385=>738,1386=>658,1387=>634,1388=>271,1389=>980,1390=>623,1391=>634,1392=>634,1393=>608,1394=>634,1395=>629,1396=>634,1397=>271,1398=>634,1399=>499,1400=>634,1401=>404,1402=>974,1403=>560,1404=>648,1405=>634,1406=>634,1407=>974,1408=>634,1409=>633,1410=>435,1411=>974,1412=>636,1413=>609,1414=>805,1415=>812,1417=>337,1418=>361,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>361,1471=>0,1472=>295,1473=>0,1474=>0,1475=>295,1478=>441,1479=>0,1488=>668,1489=>578,1490=>412,1491=>546,1492=>653,1493=>272,1494=>346,1495=>653,1496=>648,1497=>224,1498=>537,1499=>529,1500=>568,1501=>664,1502=>679,1503=>272,1504=>400,1505=>649,1506=>626,1507=>640,1508=>625,1509=>540,1510=>593,1511=>709,1512=>564,1513=>708,1514=>657,1520=>471,1521=>423,1522=>331,1523=>416,1524=>645,1542=>637,1543=>637,1545=>757,1546=>977,1548=>323,1557=>0,1563=>318,1567=>531,1569=>470,1570=>278,1571=>278,1572=>483,1573=>278,1574=>783,1575=>278,1576=>941,1577=>524,1578=>941,1579=>941,1580=>646,1581=>646,1582=>646,1583=>445,1584=>445,1585=>483,1586=>483,1587=>1221,1588=>1221,1589=>1209,1590=>1209,1591=>925,1592=>925,1593=>597,1594=>597,1600=>293,1601=>1037,1602=>776,1603=>824,1604=>727,1605=>619,1606=>734,1607=>524,1608=>483,1609=>783,1610=>783,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1619=>0,1620=>0,1621=>0,1623=>0,1626=>500,1632=>537,1633=>537,1634=>537,1635=>537,1636=>537,1637=>537,1638=>537,1639=>537,1640=>537,1641=>537,1642=>537,1643=>325,1644=>318,1645=>545,1646=>941,1647=>776,1648=>0,1652=>292,1657=>941,1658=>941,1659=>941,1660=>941,1661=>941,1662=>941,1663=>941,1664=>941,1665=>646,1666=>646,1667=>646,1668=>646,1669=>646,1670=>646,1671=>646,1672=>445,1673=>445,1674=>445,1675=>445,1676=>445,1677=>445,1678=>445,1679=>445,1680=>445,1681=>483,1682=>483,1683=>498,1684=>530,1685=>610,1686=>530,1687=>483,1688=>483,1689=>483,1690=>1221,1691=>1221,1692=>1221,1693=>1209,1694=>1209,1695=>925,1696=>597,1697=>1037,1698=>1037,1699=>1037,1700=>1037,1701=>1037,1702=>1037,1703=>776,1704=>776,1705=>895,1706=>1054,1707=>895,1708=>824,1709=>824,1710=>824,1711=>895,1712=>895,1713=>895,1714=>895,1715=>895,1716=>895,1717=>727,1718=>727,1719=>727,1720=>727,1721=>734,1722=>734,1723=>734,1724=>734,1725=>734,1726=>698,1727=>646,1734=>483,1740=>783,1742=>783,1749=>524,1776=>537,1777=>537,1778=>537,1779=>537,1780=>537,1781=>537,1782=>537,1783=>537,1784=>537,1785=>537,1984=>636,1985=>636,1986=>636,1987=>636,1988=>636,1989=>636,1990=>636,1991=>636,1992=>636,1993=>636,1994=>278,1995=>571,1996=>424,1997=>592,1998=>654,1999=>654,2000=>594,2001=>654,2002=>829,2003=>438,2004=>438,2005=>559,2006=>612,2007=>350,2008=>959,2009=>473,2010=>783,2011=>654,2012=>625,2013=>734,2014=>530,2015=>724,2016=>473,2017=>625,2018=>594,2019=>530,2020=>530,2021=>522,2022=>594,2023=>594,2027=>0,2028=>0,2029=>0,2030=>0,2031=>0,2032=>0,2033=>0,2034=>0,2035=>0,2036=>313,2037=>313,2040=>560,2041=>560,2042=>361,3647=>636,3713=>670,3714=>684,3716=>688,3719=>482,3720=>628,3722=>684,3725=>688,3732=>669,3733=>642,3734=>645,3735=>655,3737=>659,3738=>625,3739=>625,3740=>745,3741=>767,3742=>687,3743=>687,3745=>702,3746=>688,3747=>684,3749=>649,3751=>632,3754=>703,3755=>819,3757=>633,3758=>684,3759=>788,3760=>632,3761=>0,3762=>539,3763=>539,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>663,3776=>375,3777=>657,3778=>460,3779=>547,3780=>491,3782=>674,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>636,3793=>641,3794=>641,3795=>670,3796=>625,3797=>625,3798=>703,3799=>670,3800=>674,3801=>677,3804=>1028,3805=>1028,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>508,4305=>518,4306=>581,4307=>818,4308=>508,4309=>513,4310=>500,4311=>801,4312=>518,4313=>510,4314=>1064,4315=>522,4316=>522,4317=>786,4318=>508,4319=>518,4320=>796,4321=>522,4322=>654,4323=>522,4324=>825,4325=>513,4326=>786,4327=>518,4328=>518,4329=>522,4330=>571,4331=>522,4332=>518,4333=>520,4334=>522,4335=>454,4336=>508,4337=>518,4338=>508,4339=>508,4340=>518,4341=>554,4342=>828,4343=>552,4344=>508,4345=>571,4346=>508,4347=>448,4348=>324,5121=>684,5122=>684,5123=>684,5124=>684,5125=>769,5126=>769,5127=>769,5129=>769,5130=>769,5131=>769,5132=>835,5133=>834,5134=>835,5135=>834,5136=>835,5137=>834,5138=>967,5139=>1007,5140=>967,5141=>1007,5142=>769,5143=>967,5144=>1007,5145=>967,5146=>1007,5147=>769,5149=>256,5150=>543,5151=>423,5152=>423,5153=>389,5154=>389,5155=>393,5156=>389,5157=>466,5158=>385,5159=>256,5160=>389,5161=>389,5162=>389,5163=>1090,5164=>909,5165=>953,5166=>1117,5167=>684,5168=>684,5169=>684,5170=>684,5171=>729,5172=>729,5173=>729,5175=>729,5176=>729,5177=>729,5178=>835,5179=>684,5180=>835,5181=>834,5182=>835,5183=>834,5184=>967,5185=>1007,5186=>967,5187=>1007,5188=>967,5189=>1007,5190=>967,5191=>1007,5192=>729,5193=>508,5194=>192,5196=>732,5197=>732,5198=>732,5199=>732,5200=>730,5201=>730,5202=>730,5204=>730,5205=>730,5206=>730,5207=>921,5208=>889,5209=>921,5210=>889,5211=>921,5212=>889,5213=>928,5214=>900,5215=>928,5216=>900,5217=>947,5218=>900,5219=>947,5220=>900,5221=>947,5222=>434,5223=>877,5224=>877,5225=>866,5226=>890,5227=>628,5228=>628,5229=>628,5230=>628,5231=>628,5232=>628,5233=>628,5234=>628,5235=>628,5236=>860,5237=>771,5238=>815,5239=>816,5240=>815,5241=>816,5242=>860,5243=>771,5244=>860,5245=>771,5246=>815,5247=>816,5248=>815,5249=>816,5250=>815,5251=>407,5252=>407,5253=>750,5254=>775,5255=>750,5256=>775,5257=>628,5258=>628,5259=>628,5260=>628,5261=>628,5262=>628,5263=>628,5264=>628,5265=>628,5266=>860,5267=>771,5268=>815,5269=>816,5270=>815,5271=>816,5272=>860,5273=>771,5274=>860,5275=>771,5276=>815,5277=>816,5278=>815,5279=>816,5280=>815,5281=>435,5282=>435,5283=>610,5284=>557,5285=>557,5286=>557,5287=>610,5288=>610,5289=>610,5290=>557,5291=>557,5292=>749,5293=>769,5294=>746,5295=>764,5296=>746,5297=>764,5298=>749,5299=>769,5300=>749,5301=>769,5302=>746,5303=>764,5304=>746,5305=>764,5306=>746,5307=>386,5308=>508,5309=>386,5312=>852,5313=>852,5314=>852,5315=>852,5316=>852,5317=>852,5318=>852,5319=>852,5320=>852,5321=>1069,5322=>1035,5323=>1059,5324=>852,5325=>1059,5326=>852,5327=>852,5328=>600,5329=>453,5330=>600,5331=>852,5332=>852,5333=>852,5334=>852,5335=>852,5336=>852,5337=>852,5338=>852,5339=>852,5340=>1069,5341=>1035,5342=>1059,5343=>1030,5344=>1059,5345=>1030,5346=>1069,5347=>1035,5348=>1069,5349=>1035,5350=>1083,5351=>1030,5352=>1083,5353=>1030,5354=>600,5356=>729,5357=>603,5358=>603,5359=>603,5360=>603,5361=>603,5362=>603,5363=>603,5364=>603,5365=>603,5366=>834,5367=>754,5368=>792,5369=>771,5370=>792,5371=>771,5372=>834,5373=>754,5374=>834,5375=>754,5376=>792,5377=>771,5378=>792,5379=>771,5380=>792,5381=>418,5382=>420,5383=>418,5392=>712,5393=>712,5394=>712,5395=>892,5396=>892,5397=>892,5398=>892,5399=>910,5400=>872,5401=>910,5402=>872,5403=>910,5404=>872,5405=>1140,5406=>1100,5407=>1140,5408=>1100,5409=>1140,5410=>1100,5411=>1140,5412=>1100,5413=>641,5414=>627,5415=>627,5416=>627,5417=>627,5418=>627,5419=>627,5420=>627,5421=>627,5422=>627,5423=>844,5424=>781,5425=>816,5426=>818,5427=>816,5428=>818,5429=>844,5430=>781,5431=>844,5432=>781,5433=>816,5434=>818,5435=>816,5436=>818,5437=>816,5438=>418,5440=>389,5441=>484,5442=>916,5443=>916,5444=>916,5445=>916,5446=>916,5447=>916,5448=>603,5449=>603,5450=>603,5451=>603,5452=>603,5453=>603,5454=>834,5455=>754,5456=>418,5458=>729,5459=>684,5460=>684,5461=>684,5462=>684,5463=>726,5464=>726,5465=>726,5466=>726,5467=>924,5468=>1007,5469=>508,5470=>732,5471=>732,5472=>732,5473=>732,5474=>732,5475=>732,5476=>730,5477=>730,5478=>730,5479=>730,5480=>947,5481=>900,5482=>508,5492=>831,5493=>831,5494=>831,5495=>831,5496=>831,5497=>831,5498=>831,5499=>563,5500=>752,5501=>484,5502=>1047,5503=>1047,5504=>1047,5505=>1047,5506=>1047,5507=>1047,5508=>1047,5509=>825,5514=>831,5515=>831,5516=>831,5517=>831,5518=>1259,5519=>1259,5520=>1259,5521=>1002,5522=>1002,5523=>1259,5524=>1259,5525=>700,5526=>1073,5536=>852,5537=>852,5538=>852,5539=>852,5540=>852,5541=>852,5542=>600,5543=>643,5544=>643,5545=>643,5546=>643,5547=>643,5548=>643,5549=>643,5550=>418,5551=>628,5598=>770,5601=>767,5702=>468,5703=>468,5742=>444,5743=>1047,5744=>1310,5745=>1632,5746=>1632,5747=>1375,5748=>1375,5749=>1632,5750=>1632,5760=>477,5761=>493,5762=>712,5763=>931,5764=>1150,5765=>1370,5766=>493,5767=>712,5768=>931,5769=>1150,5770=>1370,5771=>498,5772=>718,5773=>938,5774=>1159,5775=>1379,5776=>493,5777=>712,5778=>930,5779=>1149,5780=>1370,5781=>498,5782=>752,5783=>789,5784=>1205,5785=>1150,5786=>683,5787=>507,5788=>507,7424=>592,7425=>717,7426=>982,7427=>586,7428=>550,7429=>605,7430=>605,7431=>491,7432=>541,7433=>278,7434=>395,7435=>579,7436=>583,7437=>754,7438=>650,7439=>612,7440=>550,7441=>684,7442=>684,7443=>684,7444=>1023,7446=>612,7447=>612,7448=>524,7449=>602,7450=>602,7451=>583,7452=>574,7453=>737,7454=>948,7455=>638,7456=>592,7457=>818,7458=>525,7459=>526,7462=>583,7463=>592,7464=>564,7465=>524,7466=>590,7467=>639,7468=>431,7469=>613,7470=>432,7472=>485,7473=>398,7474=>398,7475=>488,7476=>474,7477=>186,7478=>186,7479=>413,7480=>351,7481=>543,7482=>471,7483=>471,7484=>496,7485=>439,7486=>380,7487=>438,7488=>385,7489=>461,7490=>623,7491=>392,7492=>392,7493=>405,7494=>648,7495=>428,7496=>405,7497=>417,7498=>417,7499=>360,7500=>359,7501=>405,7502=>179,7503=>426,7504=>623,7505=>409,7506=>414,7507=>370,7508=>414,7509=>414,7510=>428,7511=>295,7512=>405,7513=>470,7514=>623,7515=>417,7517=>402,7518=>373,7519=>385,7520=>416,7521=>364,7522=>179,7523=>259,7524=>405,7525=>417,7526=>402,7527=>373,7528=>412,7529=>416,7530=>364,7543=>635,7544=>474,7547=>372,7549=>667,7557=>278,7579=>405,7580=>370,7581=>370,7582=>414,7583=>360,7584=>296,7585=>233,7586=>405,7587=>405,7588=>261,7589=>250,7590=>261,7591=>261,7592=>234,7593=>250,7594=>235,7595=>376,7596=>623,7597=>623,7598=>411,7599=>479,7600=>409,7601=>414,7602=>414,7603=>360,7604=>287,7605=>295,7606=>508,7607=>418,7608=>361,7609=>406,7610=>417,7611=>366,7612=>437,7613=>366,7614=>392,7615=>414,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>684,7681=>613,7682=>686,7683=>635,7684=>686,7685=>635,7686=>686,7687=>635,7688=>698,7689=>550,7690=>770,7691=>635,7692=>770,7693=>635,7694=>770,7695=>635,7696=>770,7697=>635,7698=>770,7699=>635,7700=>632,7701=>615,7702=>632,7703=>615,7704=>632,7705=>615,7706=>632,7707=>615,7708=>632,7709=>615,7710=>575,7711=>352,7712=>775,7713=>635,7714=>752,7715=>634,7716=>752,7717=>634,7718=>752,7719=>634,7720=>752,7721=>634,7722=>752,7723=>634,7724=>295,7725=>278,7726=>295,7727=>278,7728=>656,7729=>579,7730=>656,7731=>579,7732=>656,7733=>579,7734=>557,7735=>288,7736=>557,7737=>288,7738=>557,7739=>278,7740=>557,7741=>278,7742=>863,7743=>974,7744=>863,7745=>974,7746=>863,7747=>974,7748=>748,7749=>634,7750=>748,7751=>634,7752=>748,7753=>634,7754=>748,7755=>634,7756=>787,7757=>612,7758=>787,7759=>612,7760=>787,7761=>612,7762=>787,7763=>612,7764=>603,7765=>635,7766=>603,7767=>635,7768=>695,7769=>411,7770=>695,7771=>411,7772=>695,7773=>411,7774=>695,7775=>411,7776=>635,7777=>521,7778=>635,7779=>521,7780=>635,7781=>521,7782=>635,7783=>521,7784=>635,7785=>521,7786=>611,7787=>392,7788=>611,7789=>392,7790=>611,7791=>392,7792=>611,7793=>392,7794=>732,7795=>634,7796=>732,7797=>634,7798=>732,7799=>634,7800=>732,7801=>634,7802=>732,7803=>634,7804=>684,7805=>592,7806=>684,7807=>592,7808=>989,7809=>818,7810=>989,7811=>818,7812=>989,7813=>818,7814=>989,7815=>818,7816=>989,7817=>818,7818=>685,7819=>592,7820=>685,7821=>592,7822=>611,7823=>592,7824=>685,7825=>525,7826=>685,7827=>525,7828=>685,7829=>525,7830=>634,7831=>392,7832=>818,7833=>592,7834=>613,7835=>352,7836=>352,7837=>352,7838=>769,7839=>612,7840=>684,7841=>613,7842=>684,7843=>613,7844=>684,7845=>613,7846=>684,7847=>613,7848=>684,7849=>613,7850=>684,7851=>613,7852=>684,7853=>613,7854=>684,7855=>613,7856=>684,7857=>613,7858=>684,7859=>613,7860=>684,7861=>613,7862=>684,7863=>613,7864=>632,7865=>615,7866=>632,7867=>615,7868=>632,7869=>615,7870=>632,7871=>615,7872=>632,7873=>615,7874=>632,7875=>615,7876=>632,7877=>615,7878=>632,7879=>615,7880=>295,7881=>278,7882=>295,7883=>278,7884=>787,7885=>612,7886=>787,7887=>612,7888=>787,7889=>612,7890=>787,7891=>612,7892=>787,7893=>612,7894=>787,7895=>612,7896=>787,7897=>612,7898=>913,7899=>612,7900=>913,7901=>612,7902=>913,7903=>612,7904=>913,7905=>612,7906=>913,7907=>612,7908=>732,7909=>634,7910=>732,7911=>634,7912=>858,7913=>634,7914=>858,7915=>634,7916=>858,7917=>634,7918=>858,7919=>634,7920=>858,7921=>634,7922=>611,7923=>592,7924=>611,7925=>592,7926=>611,7927=>592,7928=>611,7929=>592,7930=>769,7931=>477,7936=>659,7937=>659,7938=>659,7939=>659,7940=>659,7941=>659,7942=>659,7943=>659,7944=>684,7945=>684,7946=>877,7947=>877,7948=>769,7949=>801,7950=>708,7951=>743,7952=>541,7953=>541,7954=>541,7955=>541,7956=>541,7957=>541,7960=>711,7961=>711,7962=>966,7963=>975,7964=>898,7965=>928,7968=>634,7969=>634,7970=>634,7971=>634,7972=>634,7973=>634,7974=>634,7975=>634,7976=>837,7977=>835,7978=>1086,7979=>1089,7980=>1027,7981=>1051,7982=>934,7983=>947,7984=>338,7985=>338,7986=>338,7987=>338,7988=>338,7989=>338,7990=>338,7991=>338,7992=>380,7993=>374,7994=>635,7995=>635,7996=>570,7997=>600,7998=>489,7999=>493,8000=>612,8001=>612,8002=>612,8003=>612,8004=>612,8005=>612,8008=>804,8009=>848,8010=>1095,8011=>1100,8012=>938,8013=>970,8016=>579,8017=>579,8018=>579,8019=>579,8020=>579,8021=>579,8022=>579,8023=>579,8025=>784,8027=>998,8029=>1012,8031=>897,8032=>837,8033=>837,8034=>837,8035=>837,8036=>837,8037=>837,8038=>837,8039=>837,8040=>802,8041=>843,8042=>1089,8043=>1095,8044=>946,8045=>972,8046=>921,8047=>952,8048=>659,8049=>659,8050=>541,8051=>548,8052=>634,8053=>654,8054=>338,8055=>338,8056=>612,8057=>612,8058=>579,8059=>579,8060=>837,8061=>837,8064=>659,8065=>659,8066=>659,8067=>659,8068=>659,8069=>659,8070=>659,8071=>659,8072=>684,8073=>684,8074=>877,8075=>877,8076=>769,8077=>801,8078=>708,8079=>743,8080=>634,8081=>634,8082=>634,8083=>634,8084=>634,8085=>634,8086=>634,8087=>634,8088=>837,8089=>835,8090=>1086,8091=>1089,8092=>1027,8093=>1051,8094=>934,8095=>947,8096=>837,8097=>837,8098=>837,8099=>837,8100=>837,8101=>837,8102=>837,8103=>837,8104=>802,8105=>843,8106=>1089,8107=>1095,8108=>946,8109=>972,8110=>921,8111=>952,8112=>659,8113=>659,8114=>659,8115=>659,8116=>659,8118=>659,8119=>659,8120=>684,8121=>684,8122=>716,8123=>692,8124=>684,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>634,8131=>634,8132=>654,8134=>634,8135=>634,8136=>805,8137=>746,8138=>931,8139=>871,8140=>752,8141=>500,8142=>500,8143=>500,8144=>338,8145=>338,8146=>338,8147=>338,8150=>338,8151=>338,8152=>295,8153=>295,8154=>475,8155=>408,8157=>500,8158=>500,8159=>500,8160=>579,8161=>579,8162=>579,8163=>579,8164=>635,8165=>635,8166=>579,8167=>579,8168=>611,8169=>611,8170=>845,8171=>825,8172=>685,8173=>500,8174=>500,8175=>500,8178=>837,8179=>837,8180=>837,8182=>837,8183=>837,8184=>941,8185=>813,8186=>922,8187=>826,8188=>764,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>636,8200=>318,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>361,8209=>361,8210=>636,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>318,8217=>318,8218=>318,8219=>318,8220=>518,8221=>518,8222=>518,8223=>518,8224=>500,8225=>500,8226=>590,8227=>590,8228=>334,8229=>667,8230=>1000,8231=>318,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1342,8241=>1735,8242=>227,8243=>374,8244=>520,8245=>227,8246=>374,8247=>520,8248=>339,8249=>400,8250=>400,8251=>838,8252=>485,8253=>531,8254=>500,8255=>804,8256=>804,8257=>250,8258=>1000,8259=>500,8260=>167,8261=>390,8262=>390,8263=>922,8264=>733,8265=>733,8266=>497,8267=>636,8268=>500,8269=>500,8270=>500,8271=>337,8272=>804,8273=>500,8274=>450,8275=>1000,8276=>804,8277=>838,8278=>586,8279=>663,8280=>838,8281=>838,8282=>318,8283=>797,8284=>838,8285=>318,8286=>318,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>401,8305=>179,8308=>401,8309=>401,8310=>401,8311=>401,8312=>401,8313=>401,8314=>528,8315=>528,8316=>528,8317=>246,8318=>246,8319=>398,8320=>401,8321=>401,8322=>401,8323=>401,8324=>401,8325=>401,8326=>401,8327=>401,8328=>401,8329=>401,8330=>528,8331=>528,8332=>528,8333=>246,8334=>246,8336=>392,8337=>417,8338=>414,8339=>444,8340=>417,8341=>404,8342=>426,8343=>166,8344=>623,8345=>398,8346=>428,8347=>373,8348=>295,8352=>877,8353=>636,8354=>636,8355=>636,8356=>636,8357=>974,8358=>748,8359=>1272,8360=>1074,8361=>989,8362=>784,8363=>636,8364=>636,8365=>636,8366=>636,8367=>1272,8368=>636,8369=>636,8370=>636,8371=>636,8372=>774,8373=>636,8376=>636,8377=>636,8378=>679,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1019,8449=>1019,8450=>698,8451=>1123,8452=>642,8453=>1019,8454=>1067,8455=>614,8456=>698,8457=>952,8459=>988,8460=>754,8461=>850,8462=>634,8463=>634,8464=>470,8465=>697,8466=>720,8467=>413,8468=>818,8469=>801,8470=>1040,8471=>1000,8472=>697,8473=>701,8474=>787,8475=>798,8476=>814,8477=>792,8478=>896,8479=>684,8480=>1020,8481=>1074,8482=>1000,8483=>684,8484=>745,8485=>578,8486=>764,8487=>764,8488=>616,8489=>338,8490=>656,8491=>684,8492=>786,8493=>703,8494=>854,8495=>592,8496=>605,8497=>786,8498=>575,8499=>1069,8500=>462,8501=>745,8502=>674,8503=>466,8504=>645,8505=>380,8506=>926,8507=>1194,8508=>702,8509=>728,8510=>654,8511=>849,8512=>811,8513=>775,8514=>557,8515=>557,8516=>611,8517=>819,8518=>708,8519=>615,8520=>351,8521=>351,8523=>780,8526=>526,8528=>969,8529=>969,8530=>1370,8531=>969,8532=>969,8533=>969,8534=>969,8535=>969,8536=>969,8537=>969,8538=>969,8539=>969,8540=>969,8541=>969,8542=>969,8543=>568,8544=>295,8545=>492,8546=>689,8547=>923,8548=>684,8549=>922,8550=>1120,8551=>1317,8552=>917,8553=>685,8554=>933,8555=>1131,8556=>557,8557=>698,8558=>770,8559=>863,8560=>278,8561=>458,8562=>637,8563=>812,8564=>592,8565=>811,8566=>991,8567=>1170,8568=>819,8569=>592,8570=>822,8571=>1002,8572=>278,8573=>550,8574=>635,8575=>974,8576=>1245,8577=>770,8578=>1245,8579=>703,8580=>549,8581=>698,8585=>969,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>684,8705=>636,8706=>517,8707=>632,8708=>632,8709=>871,8710=>669,8711=>669,8712=>871,8713=>871,8714=>718,8715=>871,8716=>871,8717=>718,8718=>636,8719=>757,8720=>757,8721=>674,8722=>838,8723=>838,8724=>838,8725=>337,8726=>637,8727=>838,8728=>626,8729=>626,8730=>637,8731=>637,8732=>637,8733=>714,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>732,8744=>732,8745=>732,8746=>732,8747=>521,8748=>789,8749=>1057,8750=>521,8751=>789,8752=>1057,8753=>521,8754=>521,8755=>521,8756=>636,8757=>636,8758=>260,8759=>636,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>839,8787=>839,8788=>1000,8789=>1000,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>838,8809=>838,8810=>1047,8811=>1047,8812=>464,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>732,8845=>732,8846=>732,8847=>838,8848=>838,8849=>838,8850=>838,8851=>780,8852=>780,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>871,8867=>871,8868=>871,8869=>871,8870=>521,8871=>521,8872=>871,8873=>871,8874=>871,8875=>871,8876=>871,8877=>871,8878=>871,8879=>871,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>521,8891=>732,8892=>732,8893=>732,8894=>838,8895=>838,8896=>820,8897=>820,8898=>820,8899=>820,8900=>494,8901=>318,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>732,8911=>732,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1000,8947=>871,8948=>718,8949=>871,8950=>871,8951=>718,8952=>871,8953=>871,8954=>1000,8955=>871,8956=>718,8957=>871,8958=>718,8959=>871,8960=>602,8961=>602,8962=>635,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>390,8969=>390,8970=>390,8971=>390,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>513,8984=>1000,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>521,8993=>521,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>338,9076=>635,9077=>837,9082=>659,9085=>757,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>521,9166=>838,9167=>945,9187=>873,9189=>769,9192=>636,9250=>635,9251=>635,9312=>896,9313=>896,9314=>896,9315=>896,9316=>896,9317=>896,9318=>896,9319=>896,9320=>896,9321=>896,9472=>602,9473=>602,9474=>602,9475=>602,9476=>602,9477=>602,9478=>602,9479=>602,9480=>602,9481=>602,9482=>602,9483=>602,9484=>602,9485=>602,9486=>602,9487=>602,9488=>602,9489=>602,9490=>602,9491=>602,9492=>602,9493=>602,9494=>602,9495=>602,9496=>602,9497=>602,9498=>602,9499=>602,9500=>602,9501=>602,9502=>602,9503=>602,9504=>602,9505=>602,9506=>602,9507=>602,9508=>602,9509=>602,9510=>602,9511=>602,9512=>602,9513=>602,9514=>602,9515=>602,9516=>602,9517=>602,9518=>602,9519=>602,9520=>602,9521=>602,9522=>602,9523=>602,9524=>602,9525=>602,9526=>602,9527=>602,9528=>602,9529=>602,9530=>602,9531=>602,9532=>602,9533=>602,9534=>602,9535=>602,9536=>602,9537=>602,9538=>602,9539=>602,9540=>602,9541=>602,9542=>602,9543=>602,9544=>602,9545=>602,9546=>602,9547=>602,9548=>602,9549=>602,9550=>602,9551=>602,9552=>602,9553=>602,9554=>602,9555=>602,9556=>602,9557=>602,9558=>602,9559=>602,9560=>602,9561=>602,9562=>602,9563=>602,9564=>602,9565=>602,9566=>602,9567=>602,9568=>602,9569=>602,9570=>602,9571=>602,9572=>602,9573=>602,9574=>602,9575=>602,9576=>602,9577=>602,9578=>602,9579=>602,9580=>602,9581=>602,9582=>602,9583=>602,9584=>602,9585=>602,9586=>602,9587=>602,9588=>602,9589=>602,9590=>602,9591=>602,9592=>602,9593=>602,9594=>602,9595=>602,9596=>602,9597=>602,9598=>602,9599=>602,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>791,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>873,9697=>873,9698=>769,9699=>769,9700=>769,9701=>769,9702=>590,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>322,10076=>322,10077=>538,10078=>538,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>896,10103=>896,10104=>896,10105=>896,10106=>896,10107=>896,10108=>896,10109=>896,10110=>896,10111=>896,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>390,10182=>390,10208=>494,10214=>495,10215=>495,10216=>390,10217=>390,10218=>556,10219=>556,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>732,10241=>732,10242=>732,10243=>732,10244=>732,10245=>732,10246=>732,10247=>732,10248=>732,10249=>732,10250=>732,10251=>732,10252=>732,10253=>732,10254=>732,10255=>732,10256=>732,10257=>732,10258=>732,10259=>732,10260=>732,10261=>732,10262=>732,10263=>732,10264=>732,10265=>732,10266=>732,10267=>732,10268=>732,10269=>732,10270=>732,10271=>732,10272=>732,10273=>732,10274=>732,10275=>732,10276=>732,10277=>732,10278=>732,10279=>732,10280=>732,10281=>732,10282=>732,10283=>732,10284=>732,10285=>732,10286=>732,10287=>732,10288=>732,10289=>732,10290=>732,10291=>732,10292=>732,10293=>732,10294=>732,10295=>732,10296=>732,10297=>732,10298=>732,10299=>732,10300=>732,10301=>732,10302=>732,10303=>732,10304=>732,10305=>732,10306=>732,10307=>732,10308=>732,10309=>732,10310=>732,10311=>732,10312=>732,10313=>732,10314=>732,10315=>732,10316=>732,10317=>732,10318=>732,10319=>732,10320=>732,10321=>732,10322=>732,10323=>732,10324=>732,10325=>732,10326=>732,10327=>732,10328=>732,10329=>732,10330=>732,10331=>732,10332=>732,10333=>732,10334=>732,10335=>732,10336=>732,10337=>732,10338=>732,10339=>732,10340=>732,10341=>732,10342=>732,10343=>732,10344=>732,10345=>732,10346=>732,10347=>732,10348=>732,10349=>732,10350=>732,10351=>732,10352=>732,10353=>732,10354=>732,10355=>732,10356=>732,10357=>732,10358=>732,10359=>732,10360=>732,10361=>732,10362=>732,10363=>732,10364=>732,10365=>732,10366=>732,10367=>732,10368=>732,10369=>732,10370=>732,10371=>732,10372=>732,10373=>732,10374=>732,10375=>732,10376=>732,10377=>732,10378=>732,10379=>732,10380=>732,10381=>732,10382=>732,10383=>732,10384=>732,10385=>732,10386=>732,10387=>732,10388=>732,10389=>732,10390=>732,10391=>732,10392=>732,10393=>732,10394=>732,10395=>732,10396=>732,10397=>732,10398=>732,10399=>732,10400=>732,10401=>732,10402=>732,10403=>732,10404=>732,10405=>732,10406=>732,10407=>732,10408=>732,10409=>732,10410=>732,10411=>732,10412=>732,10413=>732,10414=>732,10415=>732,10416=>732,10417=>732,10418=>732,10419=>732,10420=>732,10421=>732,10422=>732,10423=>732,10424=>732,10425=>732,10426=>732,10427=>732,10428=>732,10429=>732,10430=>732,10431=>732,10432=>732,10433=>732,10434=>732,10435=>732,10436=>732,10437=>732,10438=>732,10439=>732,10440=>732,10441=>732,10442=>732,10443=>732,10444=>732,10445=>732,10446=>732,10447=>732,10448=>732,10449=>732,10450=>732,10451=>732,10452=>732,10453=>732,10454=>732,10455=>732,10456=>732,10457=>732,10458=>732,10459=>732,10460=>732,10461=>732,10462=>732,10463=>732,10464=>732,10465=>732,10466=>732,10467=>732,10468=>732,10469=>732,10470=>732,10471=>732,10472=>732,10473=>732,10474=>732,10475=>732,10476=>732,10477=>732,10478=>732,10479=>732,10480=>732,10481=>732,10482=>732,10483=>732,10484=>732,10485=>732,10486=>732,10487=>732,10488=>732,10489=>732,10490=>732,10491=>732,10492=>732,10493=>732,10494=>732,10495=>732,10502=>838,10503=>838,10506=>838,10507=>838,10560=>683,10561=>683,10627=>734,10628=>734,10702=>838,10703=>1000,10704=>1000,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1325,10765=>521,10766=>521,10767=>521,10768=>521,10769=>521,10770=>521,10771=>521,10772=>521,10773=>521,10774=>521,10775=>521,10776=>521,10777=>521,10778=>521,10779=>521,10780=>521,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>836,11023=>836,11024=>836,11025=>836,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>557,11361=>278,11362=>557,11363=>603,11364=>695,11365=>613,11366=>392,11367=>752,11368=>634,11369=>656,11370=>579,11371=>685,11372=>525,11373=>781,11374=>863,11375=>684,11376=>781,11377=>734,11378=>1128,11379=>961,11380=>592,11381=>654,11382=>568,11383=>660,11385=>414,11386=>612,11387=>491,11388=>175,11389=>431,11390=>635,11391=>685,11520=>591,11521=>595,11522=>564,11523=>602,11524=>587,11525=>911,11526=>626,11527=>952,11528=>595,11529=>607,11530=>954,11531=>620,11532=>595,11533=>926,11534=>595,11535=>806,11536=>931,11537=>584,11538=>592,11539=>923,11540=>953,11541=>828,11542=>596,11543=>595,11544=>590,11545=>592,11546=>592,11547=>621,11548=>920,11549=>589,11550=>586,11551=>581,11552=>914,11553=>596,11554=>595,11555=>592,11556=>642,11557=>901,11568=>646,11569=>888,11570=>888,11571=>682,11572=>684,11573=>635,11574=>562,11575=>684,11576=>684,11577=>632,11578=>632,11579=>683,11580=>875,11581=>685,11582=>491,11583=>685,11584=>888,11585=>888,11586=>300,11587=>627,11588=>752,11589=>656,11590=>527,11591=>685,11592=>645,11593=>632,11594=>502,11595=>953,11596=>778,11597=>748,11598=>621,11599=>295,11600=>778,11601=>295,11602=>752,11603=>633,11604=>888,11605=>888,11606=>752,11607=>320,11608=>749,11609=>888,11610=>888,11611=>698,11612=>768,11613=>685,11614=>698,11615=>622,11616=>684,11617=>752,11618=>632,11619=>788,11620=>567,11621=>788,11631=>515,11800=>531,11806=>838,11810=>390,11811=>390,11812=>390,11813=>390,11822=>531,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>686,42193=>603,42194=>603,42195=>770,42196=>611,42197=>611,42198=>775,42199=>656,42200=>656,42201=>512,42202=>698,42203=>703,42204=>685,42205=>575,42206=>575,42207=>863,42208=>748,42209=>557,42210=>635,42211=>695,42212=>695,42213=>684,42214=>684,42215=>752,42216=>775,42217=>512,42218=>989,42219=>685,42220=>611,42221=>686,42222=>684,42223=>684,42224=>632,42225=>632,42226=>295,42227=>787,42228=>732,42229=>732,42230=>557,42231=>767,42232=>300,42233=>300,42234=>596,42235=>596,42236=>300,42237=>300,42238=>588,42239=>588,42564=>635,42565=>521,42566=>354,42567=>338,42572=>1180,42573=>1028,42576=>1029,42577=>906,42580=>1080,42581=>842,42582=>977,42583=>843,42594=>1062,42595=>912,42596=>1066,42597=>901,42598=>1178,42599=>1008,42600=>787,42601=>612,42602=>855,42603=>712,42604=>1358,42605=>1019,42606=>879,42634=>782,42635=>685,42636=>611,42637=>583,42644=>686,42645=>634,42760=>493,42761=>493,42762=>493,42763=>493,42764=>493,42765=>493,42766=>493,42767=>493,42768=>493,42769=>493,42770=>493,42771=>493,42772=>493,42773=>493,42774=>493,42779=>369,42780=>369,42781=>252,42782=>252,42783=>252,42786=>385,42787=>356,42788=>472,42789=>472,42790=>752,42791=>634,42792=>878,42793=>709,42794=>614,42795=>541,42800=>491,42801=>521,42802=>1250,42803=>985,42804=>1203,42805=>990,42806=>1142,42807=>981,42808=>971,42809=>818,42810=>971,42811=>818,42812=>959,42813=>818,42814=>703,42815=>549,42816=>656,42817=>583,42822=>680,42823=>392,42824=>582,42825=>427,42826=>807,42827=>704,42830=>1358,42831=>1019,42832=>603,42833=>635,42834=>734,42835=>774,42838=>787,42839=>635,42852=>605,42853=>635,42854=>605,42855=>635,42880=>557,42881=>278,42882=>735,42883=>634,42889=>337,42890=>376,42891=>401,42892=>275,42893=>686,42894=>487,42896=>772,42897=>667,42912=>775,42913=>635,42914=>656,42915=>579,42916=>748,42917=>634,42918=>695,42919=>411,42920=>635,42921=>521,42922=>801,43002=>915,43003=>575,43004=>603,43005=>863,43006=>295,43007=>1199,61184=>213,61185=>238,61186=>257,61187=>264,61188=>267,61189=>238,61190=>213,61191=>238,61192=>257,61193=>264,61194=>257,61195=>238,61196=>213,61197=>238,61198=>257,61199=>264,61200=>257,61201=>238,61202=>213,61203=>238,61204=>267,61205=>264,61206=>257,61207=>238,61208=>213,61209=>275,61440=>977,61441=>977,61442=>977,61443=>977,62464=>580,62465=>580,62466=>624,62467=>889,62468=>585,62469=>580,62470=>653,62471=>882,62472=>555,62473=>580,62474=>1168,62475=>589,62476=>590,62477=>869,62478=>580,62479=>589,62480=>914,62481=>590,62482=>731,62483=>583,62484=>872,62485=>589,62486=>895,62487=>589,62488=>589,62489=>590,62490=>649,62491=>589,62492=>589,62493=>599,62494=>590,62495=>516,62496=>580,62497=>584,62498=>580,62499=>580,62500=>581,62501=>638,62502=>955,62504=>931,62505=>808,62506=>508,62507=>508,62508=>508,62509=>508,62510=>508,62511=>508,62512=>508,62513=>508,62514=>508,62515=>508,62516=>518,62517=>518,62518=>518,62519=>787,62520=>787,62521=>787,62522=>787,62523=>787,62524=>546,62525=>546,62526=>546,62527=>546,62528=>546,62529=>546,63173=>612,64256=>689,64257=>630,64258=>630,64259=>967,64260=>967,64261=>686,64262=>861,64275=>1202,64276=>1202,64277=>1196,64278=>1186,64279=>1529,64285=>224,64286=>0,64287=>331,64288=>636,64289=>856,64290=>774,64291=>906,64292=>771,64293=>843,64294=>855,64295=>807,64296=>875,64297=>838,64298=>708,64299=>708,64300=>708,64301=>708,64302=>668,64303=>668,64304=>668,64305=>578,64306=>412,64307=>546,64308=>653,64309=>355,64310=>406,64312=>648,64313=>330,64314=>537,64315=>529,64316=>568,64318=>679,64320=>399,64321=>649,64323=>640,64324=>625,64326=>593,64327=>709,64328=>564,64329=>708,64330=>657,64331=>272,64332=>578,64333=>529,64334=>625,64335=>629,64338=>941,64339=>982,64340=>278,64341=>302,64342=>941,64343=>982,64344=>278,64345=>302,64346=>941,64347=>982,64348=>278,64349=>302,64350=>941,64351=>982,64352=>278,64353=>302,64354=>941,64355=>982,64356=>278,64357=>302,64358=>941,64359=>982,64360=>278,64361=>302,64362=>1037,64363=>1035,64364=>478,64365=>506,64366=>1037,64367=>1035,64368=>478,64369=>506,64370=>646,64371=>646,64372=>618,64373=>646,64374=>646,64375=>646,64376=>618,64377=>646,64378=>646,64379=>646,64380=>618,64381=>646,64382=>646,64383=>646,64384=>618,64385=>646,64386=>445,64387=>525,64388=>445,64389=>525,64390=>445,64391=>525,64392=>445,64393=>525,64394=>483,64395=>552,64396=>483,64397=>552,64398=>895,64399=>895,64400=>476,64401=>552,64402=>895,64403=>895,64404=>476,64405=>552,64406=>895,64407=>895,64408=>476,64409=>552,64410=>895,64411=>895,64412=>476,64413=>552,64414=>734,64415=>761,64416=>734,64417=>761,64418=>278,64419=>302,64426=>698,64427=>632,64428=>527,64429=>461,64467=>824,64468=>843,64469=>476,64470=>552,64473=>483,64474=>517,64488=>278,64489=>302,64508=>783,64509=>833,64510=>278,64511=>302,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65136=>293,65137=>293,65138=>293,65139=>262,65140=>293,65142=>293,65143=>293,65144=>293,65145=>293,65146=>293,65147=>293,65148=>293,65149=>293,65150=>293,65151=>293,65152=>470,65153=>278,65154=>305,65155=>278,65156=>305,65157=>483,65158=>517,65159=>278,65160=>305,65161=>783,65162=>833,65163=>278,65164=>302,65165=>278,65166=>305,65167=>941,65168=>982,65169=>278,65170=>302,65171=>524,65172=>536,65173=>941,65174=>982,65175=>278,65176=>302,65177=>941,65178=>982,65179=>278,65180=>302,65181=>646,65182=>646,65183=>618,65184=>646,65185=>646,65186=>646,65187=>618,65188=>646,65189=>646,65190=>646,65191=>618,65192=>646,65193=>445,65194=>525,65195=>445,65196=>525,65197=>483,65198=>552,65199=>483,65200=>552,65201=>1221,65202=>1275,65203=>838,65204=>892,65205=>1221,65206=>1275,65207=>838,65208=>892,65209=>1209,65210=>1225,65211=>849,65212=>867,65213=>1209,65214=>1225,65215=>849,65216=>867,65217=>925,65218=>949,65219=>796,65220=>820,65221=>925,65222=>949,65223=>796,65224=>820,65225=>597,65226=>532,65227=>597,65228=>482,65229=>597,65230=>532,65231=>523,65232=>482,65233=>1037,65234=>1035,65235=>478,65236=>506,65237=>776,65238=>834,65239=>478,65240=>506,65241=>824,65242=>843,65243=>476,65244=>552,65245=>727,65246=>757,65247=>305,65248=>331,65249=>619,65250=>666,65251=>536,65252=>578,65253=>734,65254=>761,65255=>278,65256=>302,65257=>524,65258=>536,65259=>527,65260=>461,65261=>483,65262=>517,65263=>783,65264=>833,65265=>783,65266=>833,65267=>278,65268=>302,65269=>570,65270=>597,65271=>570,65272=>597,65273=>570,65274=>597,65275=>570,65276=>597,65279=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1025,65535=>600); -// --- EOF --- diff --git a/libraries/tcpdf/fonts/dejavusans.z b/libraries/tcpdf/fonts/dejavusans.z deleted file mode 100644 index d0c4d3de7a82cc63c15cbcc1d29dab60dfc4173a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375806 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 Y#(>2uaS%6)EoOfRhw& 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�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[ARRMhj-nWN965j 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 z zpvn4a6CIN#aV-Yt!TVy&eRBKU@TDIGvn`PXJ6$W{Lk|H4xMmP&>2R30(``KL%vtc#ruX z*^X*KNwl?`ELO_zlbSt$YCoamPnjAY&T~$ldeC_71z3xU(yFk4#GygJ)6UH37AiOx z1ApUW-4yMQdP~={yZN%d85m4|t@$d`pP$8VZU)D-(qkLNIf{zV3hE_QT`;Zd5NdLg z)ODqU0UA2?Z|3qxh%K5I0VA$E_iH)~^G+VcuOE&K!%S*&6T8+b+o(4N_Ue+&%BtZz zlGT>>oeuA-ObvVE7|edL^~y+sQRm5N)HGI*Xm<`ALn{bzKZ_L5e%kXk9cSk@ zIc5nz)MB7){Bp3{P54;ku37wg6}Qw{wI9YbCPG$Q<3eRzX&x8DU|x%DpXfd zjCFPg>10jKo`~S;Bk}YjQ~Me+FQ2^!P+1EHz+mit^Qbv@W6k!d5(*VP-mJ5(%0Ckx zjJ>8OZ#TkQ2(WjaQr?Y^|^)O9h~opS6G=5 z^Q;V%olICCd4Ca=oL_l@c2EBC4}J&3lo?*EG#V=uYI>VbOXIcy?Z&{lbNelU+%C(u zD-{abmDh4YFGZ$W@yqx{TBqde3>bAjush=}B~WQLT{FHA!QA63 zU^wFhrX1oflC2hP9Dy;EMqwo>tw=dFQBtvtcEzdoN%PwyAU;5!BIIS4C%wAbG821x z&a@FT(+W%kt$2acBzZGxM#+W@s!SBHlQA(mEou)XnuaTzY-yaqhYePcH6$ULHdOZj zimpNObMLqMhTd9627rRrN zR2wUcCzeBw=xK7<&&rwkd)H>h`|X%!Y1U((ttcrIgl`YX6(2q=W(B&< z{D|qxZ;Fq+kL7C%V%cc44yMw;_A z&Wf_bTfa0N_02jR)rItixjChSgRwB$B^?~0X*lGLd$T8jue7(rr+X9Lsw}StL0{0Z z^fe6tI_l2Dk~uIc6$mQ2|IpwoYaTVdapt!Cc3;YB^DCX}kWp-3an$2vRMh07m5tN^ zbxP|z-KNjyVeIm=v3u(lkxs+vKnZuAuDc+X;zLRwff=TvRp4!w!f%$44L6TtJ^@9r z=I*Mz?FJ>rXmnBK?zz6lfX^#W{_7kK`Pp{;W9d)I*S+1`KYb+a2cwMgOaAE$|lw>ybqJI}%DJdgXkX0aj| zP2qFaUK>fu8mWViEqlvux1Jw1o;w>ivmfGlsT$_69rOr0b9;~7ZrhkeclQ8$!XW|% z0X;-Ou-jkg1_tf3{ZS=pW%ylDJxDbw*0Dv5+Q)2N#!zffvZ30rWFQ^tO`PUZt6`Vg zP*2z&&sk>%Q20nNztukL5dZ{NTA=K+L?Cbr9sW09q(d_LZsc)EsMo*_ALx^Qmkcx7MYpj4 z4KDWpm=OL+?DDLT#PwWX*2<1fw)vyuUx_jDo?9aq* z*%n*c#lBI6Ar`F|zIgEe`Vg5+uAxwQzkHhOdNo#PgEDfbS>7S&+su=2J6hxgJ9 z&Aw-IM>`hrj=#kJ1HTRKN@+pwa&(qVH5{e2bbJ^5fIskCz;d`+o5OW7;+Ih^=cHcm zF(V63%fj%Gv^5S~R`1ohx=ow_Em}4H!Gn|*Q=GNZ$d`uZP^v1v?t_$jfwMdx+=&z= zD;DB|0c11?OIDNuzC6>Yxl1UU(o`fC&695paM7;_JI5v?hP7u$6vkuWD;y`ElRJnnt_sRHeYVr~q{$gHkZWPD-Vp)fD5R`Ql&H9r zC_Kw?J}~ z(F5_F@TbWY4dU@b>ox5#Etm9Y_Z5e$9^q@$%b;r!iv(oo zr`N@09$ea`(+Fp5zDrugR^F`%_o2(j`Aq&w`D{Cl4M*x8pGhP9*4s#y{QP)qM*3iInqO93l8TML@$Fh|x^`#508L!%8G#1~>*S3u@)T64`4?Lu3q) zXywBpbPVZBIUSC1NFbFx;jES|>JPD35YJTah?p@;WtzEp+TjGSSA^z2%7;}v-H6~V zDUoDPlW5q%Bk-)14gHyGE?KYG%B{(t9r5@YWa^N~)$td5e401;1)K;QaPu9Z>%+P~aSIsrCHY7K-4~XRuWSBjjyC@b&=C%YwuUg<=9#RT74c7fe$qu{-=s;fwfdC zbwTEszq@>d#o4JgvFfElI?(`O5os;rrNW#IK?#^NC55h7HtfQhVt-#sXcntgc58W) z;4a2sVWN3M6@k&hBhbb1Q40w|9V)2~0xg20$nP5j`d~~r#Sgz0{6rMWX5J^%M!__i zTnA7=(0;AKD5sD_R}sq{2L@wf!OZ-iC@OPVJlfy#f|*5kBFM&Dp*hsE-NdaI=Sid? zS{{0p(9atiu*AVj{Yw1+B#0^l>dL^9Jt`F0_1vc{!Q(jaLxp=<1(DEI0EY?7W*Npj zjx4&Q(_u$GO+@96$k+8P&EFwf^BAU)Bdy}-E}NmuoBn(QF+L1;GZjO#9sL`Y=q#W= z!HLI{(2&ci(Smn%V5~`br0XdOCx-25p}`}M3uy!M-&2M6d_Y#;ANoH@>!Uq#Hiyw+ zLpu}$J9+${W{j^H5{bDA^P<{sDDCWJeu$+PGq-wrAkmNG`8z-4Ne3bO-x}+rO{;cMaKOHvB=hMI8_&rAECaQny8eJt|n2ed(f=2UY0&3+sRFVWi(^(Lq5(n?f z7@?UAu@n$k3fW+x6vWHn_6QSXPzFHKOCW2iNKNQ zQ3C}hg_TL9qQVqXD3FQxBgjbPBO>ELq5c`#8=?^cD_UowiF31* znWGc-_Ud93o|;e6Gb@4+hkXWg)JG|VEjF+$ z5G^&f5H@cVQ6AjM7ZxH2n@;K<*RIM=G1t zShFK9OoNAgqf~8m1(HjD1`%DCcihV@WVB$jLr3}@S%xB@u`b^Ve1;i9KenKUinb4% zWQ6I?Q2r;^+%7T*`W2fY23a^i&T0&VL_XYrvak}nm_K_Eh?GoK)WEH=!4P2bW0(qs z?p1zD+8S-S;)#N+y`aL#1jXDyG z&E{)(k}1s2$734f@yga^6a{V4fah^qQG@4ctlH9gd%C^jtVpg2+dlwXnLw!?6@f0) zAHHP5++G=`5fy_HD0AzoXlrh6n_$j78gI%#A4PH;6na9EP|H7uLx~-=mEbtg@7{@F zlH%^IjuD$WsqQEm_Tq(12@w)0Q$NsOpAokA$B<;EcIj^}1+-|dA|f0aMP{vfAR#N< zkW>I@xM8l|-*hl=7KU&E#vq9B)2nn8_z+=KQ=~va0fcocX?hHlC}B{4a5Ovs5)vTh zJP+6(10GZmEifR=+W&Ud-+$Gfew2hlJPE|G{{TM3Jq0)*pw0+%_|@OvT@)D%a_=Ef zlN*Bs3OWF3_Fv9L0Y(x?MKq=_9>E_>Mo1WjM}*P#G;?xs5O~KS&P)adL52~Ji-Hn$ zxa3_9*f|-zCLlt5;G(we7akD_&WD9b+}8>TZHY?l4-i&G-!m2zHst3w1Ot(FNf16}_B>it@Cq0#qabP*!H+e);5pYv}!U2W{fZ5mJ3pxYs z)S>Sgy*LD#eIloP(QV|cjOF@TjnUSl1a)aEPw;UAgK*5YtSq0x!$WGdmYwt=*Mrs0zO;l~uBqkRZEiV-fq^$%Dv|0iY9HxPxqA^gTEF3f& zNjj)z&}jJU-wZSqQ}HO~(^!%1!8{Z)RSBPMV<(^|eM3@?{eoRINyQIA0 zK2-6szpRu*{w460@D~2hTf%&mAvG?wSSd`rB$weYeAne4GHb*={UZidclzK?1b=Uc zK;^h)AZCM5nNx;w0W0w!PbTgEc9#)buviSe$2`4Fesky$v0CWELs$`G;HnPbl&*tV zS!}+0nM)hRDKwG?&DQLCg#9To2iV{&(unWBtg;!FNC;~Y)ipV%UD4`yNsa;#(c}1C zfIry@qT6{@=+ZY5;QQ{qNcdQUyQI3_f7u*i$U4%byrR@okHX5yqfeZyc_^AvaVoxj*eNfAeT2F{TM)God=} zCSu7!`aj>tf$(;Z+Ed5#?Rqtq5Y7*0fLeHgl1d3LvjP2vupUbyZKU!E?w0K620@kM zhDDWIneAMVIz~{I{a7;Xx3zPKR{m*0#z1AgvC$bR2cvoKOs{hIeEBOQXjl zbh>oT-xhuSp*d0&Irwn;9fXox8t2{}JBF1YXlgMv8Z$qo$63Jub6LyfwStJoZEw=U(-@rNi}W<)tTNMY+;xDB*dt1{DIcS zfxDv5G)gxloS%B4R1BHl(Wu-!og@;hnh}OS0Gh5X9EQWPa#ArW2-?4pUAs!BEOweV z5e1Q{IJhXdTvD1fOgqU9Oa>tEZ_&J91HN4KWZZ^OaRp+OxQybNZExZ>SMfAVAYO<| z+wjq>RfaC+0$IO(XnRP&9uoP#A_9EY*rA*S&N--U>MkVSNrh zIo=@}KkbeApf-NTuybKV6rh8P7ooLZ`T}Ez^ zCI7N`_gj#bM1L0p>hfrRSO1=nY?x26@8-P7*NB0pH&G5)Iowzz^&4Xrh#CRG;2o2! z5+@f3-9ri;5zpAi1ShJ@!p3 zP221DA;(&VdgWwkmB?-s%2zY$<1)MIBSKH@7@c&!f}A|xtD1e-F@A5;h`D$Wy?w0> ztj-WY9Stn}=UQ@3dhAir(ZKKInk8a*IJ7`gWVp{tyOiXdLj5_Wi<`n7kTE16D7h?u z*}cO4I0VY34JFPXv^fa~lTO?Z%z#y&tr@)^hT9CP3;d4H(e0aVALki2k13w{#eim4!|FePTmqc)whYb zBY9e+8RWr4!I-BY7hxz0f`S$l=t4!3fo96U=|@5{kq3~FG=ks1%_@HYGhmJREFC?c=kcN4-!MT&kpO(HPwB`*;~V@hQX&Fo?ggB@pb*o3 zeI`ln1#8xzVAFCuA!lW0CS^J)XQp}RChBqxj1L8TBXEEPJ@bJ3yq*Q#5dLi{dIpow z04UL9+Fl-TEfRjeyq5wf9B7Kqb02<<_w5?vySa8t5UaDvY-e*`&yVc-i1ARIYtIkf zdNX5KwRz$!4eN4zP7;{O-kwfmAnih`g{3NQ(_Cr~;_quLJOmR7i8qV=hoYAx)0VHa zm_Qr8mZ{;;X+6HjTQxnN&)Jn&I$l*37dRpgr}M;5QO*z|zf7q_fvSVg;84?DI%BUl zCXD=@$o`$usAAxdQIN=C`9{Kj9e9N~tddu$lOQHvb~Vgf6^aAp13&_ojawVUzwhGB z{ImOqcI8=C?>F)o?)?6I0KUi5kwb+vP_fE^uJ2R4zV{L#hoD55xP@kriG^;pwXgpB zzPkVF&;tHyB{iFvs0e^X#-IT%)}VtUGPnBz#D^qe=N=*=KfM zadQ4>3HdUFc#l>0fYM*P>TJ3q16j~zPyuD@i0DEgyl48%&(RaJqk#y;1)(%DA5XUz z(?|C@!%S4pYnO@YDIGMku~VCZ!masj zLfy+L4G`cjee6}7Kf9qd&ups@8Dg{HwI)!wVG9!`HuJ=f* zFdMCYttzGHFQY|*BwQ~rwPJ^k%fujrH)fdW;6j;&;$LT6vxWpbQm0(|{G-Ko<3-Hu zK)eVya-^0>AN_XB?m(ZwJy@%oysX1N6$Z3+fd{q8Mq*-Uu-0d_iBFi31S^1AFVK{W z{KJd<%O5&EjNT8!efc65O#XB@7PL6w@5hY69nuJy5XvgTXcD;p0aHM%zcUmJ;W6rC z|JC;e1>Ov@kybGF%>bL|`r^%iR5AZJ{^F}PZx~WV*Q7Vu@Aq#8+DO4xc{(lc9%2Y> z7G2RIl(flLcUDA^0WlUu394|~$>4ma9NeN+tjkEMo_}dN)6qa-3(9u``t@vnQi9+V zI-upACoB@!q0EtJ-mLkqT$@!fM`Nf26a#l|^U`b%#lXf@`C0N#e&iF2uz?d>@5pEi z6RIPZ9jC-6_qnXmGV4d9^J~CbZN(CB<)xyS^PSO_G*hnA8Xe^YmkthK*j&J1+xT%V zc}{Hh!4@tp4i*z@s}o9Oqj)tmuuEX;fmux;xqv`^n~oX1lXDEM)6A3eo5WPAS%ITr zxfEcYVhx%`KRWj8{wGp~dW!90M>;-2q4zH&M)hZtM91ZbQbhmvU&)sySo7Bouuacv zZ!me%l_05outc{g=8|AVEH99QO34w$;Od+^C|aVg$3;X(zdU6b^lsK5_53%yL;7S6TC)&|u@{o&#fof`W`isX^fZ2BShq z|A3^_8Ud32;vU1wx3v&s|+HW)z`a8|LLT@DW9je)gBQQsXHvAd7csCgV0Uu%kATR zxwlxq6`@!d7{MiOBdZ6B3`PZ67%9Jnng1nX?ha6;V4j_rXN`PTU|*m_-Uy<{m&2z! zVzG(#`iYNW=%D#efE1&nj0Rgiw)moNP9!P@+sak%En!x%@`J8}>}iAAX0&TPv{mSk zm!V^i&INfkTbUtZvOOf&T2N}W-O~Nd!099IHN4Sdk}ajARZ2*(eR71M%x24L)w!n_ z0J#&V-C7#mr_aph_C>Sl_u~>wA@S|nMMV`jnwVV8lTz*R%|cSfL-e4&^y1gQKwif# z^tpA%2RO#`h)nC(EHyQ>kUkO+cxM;! zNxkg9MxNFPIqd7VwrhC4%gKxz?@zY@m+!4r3!>L;Wrbu#S53)R%hQVzVk6A?((;zE zNlkL%j$n_ZLvfSX$Y|(8R5866--#Ik#-wzZ+r0Se;`I2O&>%5{#3g3L=OhFbWyIx# z1rxl-JL95FNyQmLW4g?_3>j*ZHAmar+-k8#Tf9Lhf5|L^#p!#yuedqPO;0ohh#7I& ziN)!vNT5%2WNboF2kbx{M#PD+S$9kM=7^XkMd@m}WXmW{GDXKZ<1>naNN`wA9NrUh z;xiKCNQf8|niHR1tm(iZ;jD58(v^aiQLvk_Gh|IMShH*?kxr|@ni9osHoUa~esdbw zhcYftcC#}75#@+aOo&W`q7u+0%Sw0VTRi8bUVTYjDBaPwFSHK4*thR~b8+9k3Bv$} zb(J1tw@ZY+#O^RrQl+5)L&c2bc1*6_eiozb&VqZpck9xtTW9=j0uv{obBsS`yuvZi zk(6Y54l^D$2!hmIJ|kEe4=$N)K9cJ&-&XAoLQdgjK?Q!o$L0;e_y<@V;b_LP%G4d2nImE57MAHw16D+ z3|j+MElAdeztJNwIP>%J(bJ0JlSI(3h_dj`6+6eeC9noVi9)9!C6Bch7FV7fZ7*v# zFiR5TIb3OZ`SyH>v^X&VzO*1r1M9yvVQV2-XU*ZlKYTP;uy>csoV{d&BJ(B+!8&re zVx%x{#q3OVTJjN2nvHc+?dYE~Vl2Ejm&WGlFdA4+M;9T^8o<;CoDqWXMtI zHl`S4tV8xFS01}Nqg)OHzqGxqk;yy@zdQ3}e2YCB?kA4XQT#{l*N?{{=N9SvJu_eD$b54yYD;D`E6%LSgY=XyI-Pj zP3~wYlN{Ep!nND2-OHHRjf@9#Kn@S+#3an{hJ*d(RXr&ZI_=;M9vI)mSnv%$asa$EMlz z*Ub0Nr$a(&Lbuti{uN@#j5bEbDuHl!xELE6LpMc0Y8-t(_O*D@$s*25j*NXIc2;bU zWc81khK@>@xolgC`GgoA@kLHlNU@SMLVZYV5*s@m(}%}K#>pQ%H@RQOnd65mc`b^I z3g+jf#AF&KH;Wh>8j+D!Ja_J}F=NKW4xHXTGd(nPY{Y$rR-y6jrcWf08rFMIIdqjFF9^1EVYN%mnPDsI|%)F^t0Xe(q zvX{gD6%^8TQriA5(SwJV59?swW?w$Eq-1EXf$c*x_Yj*{uxO*>}jYxge|6#GXy;iKB;hn3xgXY+^}-{93l+>XM^mTeA&0F*!<(lp{NX zatzsie%uFqtX%WM0G$szbF*zS`dO&$E`g6$ut!u?r_^rkjNJL^Uz26XmhtPjbolVyZ_In9=gt`D1+m~6)CN9<{A=+4Z#RxYyw zN)xc=8SVKPwxgwH)yN#JGs9~qXChx*0gE7DCVk=gv&r;MS~CXv94Cpp_t3N7F9ge> zPoV#IgMmIS)3XVC*Sww8Dj=uD*){aj5p*CVMVQ|)kYyu8IslSV(%)G?yYy)l+u{FV z?mYmbDz<>(JNNFrTe7|PY~S>@+1>Pn5R#BU2nmD`0s#^r(xrypks?)klP1yyM5I^| z6&s?WqNvYjdx{O)(+An%pSgE83C&l(@B5RzyEAjAo^xjAoS8FcVw3olnd(w6eHku$ z>^*oS^bnYL_?Q_~19JYs{_umNXW_ZemVml-dt{*Rr@R}beZiP$3tU}G#dK|;<-m4D zB8IDZD^?xJPD(R?kv-s>mF}dHKy;PcLwC(EV;FJzX_pBZd(lS)F_KtD;QL?^Lhx*= z#)Ek}#cG>l1|bdW*QoKl#4eO-0mm$d8EGwh{|3AAgcW%(JBjb)036eerZcSqUpR$N zw4q30u9MxK!8&&yuhNYfbG)gFlk&01iwfpt6qN#(i=5J1B+c)}@0VxS^qIh4P-cKJ z{fa4h^B6LYdVbWNq_o}jAa`>8!0EGlR|ZdJC7Zf9Y|)kiV=#YvmrA&2XMcGY-hC}E zNZua%6A{8K>8Ii#reM zJ1&>r-uZ*{^ig9(o#(=vqOB)H55@5L#fI|eEq(eLm$w${4QqEyA_p%9(y`6Qy}gSz zc&jWqLXm6HLzsqjMAOYy-rwoBkUV7}oJ2g4Pt*{jhphmRe zNe?=tfX3Sr-VR@U^o1mQKAzPWG$;DgX6B-eG&zV^5crmBBfZHw3xqqw00~j6wlFj(nTpAI={G z_@o$4QreX=nZlt2rza$s2Cg6PiEEfysYuP6;|ICkVcOihwDg?#kjj)ezF$I|XMB@7 zRZ-bXp64qo$klqAbJEkmmt~2i&N%p6-(H|W*Ovqosn+RYvyfzZ=iXgxCa=-E+deSUD(2f0 zV!HS0qLD>eDN9)Pt_}HQS)N+|QJ(?VnbdevfmfUS3cMDl(E6w;uS^|FqQFK90j&JDDoweYx(AP`1EPy|NrxtFW z3+_KsyR-F8aHgcOv7`+SoB3sEys@#i+|mMa54Qip?t#PuMbIY%PD$YLK7nt14+~)o zVBmG2gWrI^f+x6rd+HedK6?{6Uh+gdENU0lCTBIr?OuNnwG>+*^Mm&fFptpmBf!Nl z@FV5`13#f@;MhgeyXg1n&CD9+er5yRI+v!Yne+zaS;KH^zX-mF7kC%n2G1(2W7FwD zPBk4H=;Tz_gV;zXE)uV-+7;*(c?O(dnC*xa8qT0k=*8`*+%ksQA3Dd3XV8bt*^jl- zCo`e9cA!^X8D?APJQtbF*v2s6Nru@$CNq;+Ih|mpp}E$?Vi*mJPH%+qaBEl=-9~vZ zr-9%3G>FIc@}2%5q62D+=Hs`SAK|{Y27sDHTL9R;q-VekSN$*_EIdfgqL{q5_I5hD zk19O)E`51*0KU5I6kPpYNg6Z47zOg4`v&a)p)d5kLd`s*m_D6)WhTX*bH@D9JVbL^ zBqa@I?Z4n@8$W*3e!R%+WrYqbh^A>Mp9_iPel&&SeRaI>%!)jGFP=Pb8g|i4o{xf2 zll+uFn8vmWkIU@R4L+)ujt6E|r-+}9H?rhz@~WvI$?i@l)X-!XYl73B*i(LtOmhfO z7j=#P2!Jj@Z)Y37uy|K|u z$5932%8nid;Hzl*xzFIEzmb$jyDyIE()jw1-@HebeKTSh5Wi8(BduefyqtXLL{Ela z_1Lo{81-vJCxoUE9QzSNiP0>dD+{wcI;SR$V~BiOg`8q1K>R|3cU3Usq`~XgSYaB$ zf)gRVc-ax3GFKp8n4M;kZ0BSJ%VZFskPI1MCq;(c0Yq-{a$%K9Hp`ds256bG{DB!7 z`s&)29vLlGNt{@iz+?}oY#vj&iJ!^DO4lV-P1y7Wt(oy&{*=kD|Dc!mx$pq5*wWV* z1I9W!twb=BO;4)q+56?eJbRxr|^}-iROnqaU_*ZI(|r9NAZg9&(4|9 zeRcn5o!JGu9r1^N9d!R@k7~-{8@rN~E#>vEKQnB)vNUvab=iGOt7jU@@^_AJTs$;) z?*_In9$;mH_whPfn2pw{i6lo#_MDjw)p{%y~$|6n9@M)(ad&HTzzcw_No_u!WO^!rb5e*cvvYv%1A zT}#2#WqbqJVCmib()bBtKuYO{ACr=G(_L^#m*5I~H(Nwzh$57zUl<8HK4Z%2_^{t9 zwGL1Wq0;J1AP^K{y+6XM*bh#C00@F7U^#pRz6#4WOac4Jb8y$8BhQfyZ|sMQ!I}Hv zj(5nbDAJR#D;udBI1U0|wt(NjSsvUK8hn%?n?vgayTJ*#e(Z1m0R4HekZ9|txK2vK zie{&DJUejL0JBx1*qggMDnHQao`}v&hpJQSL@%yf{R$imzkr{>X=?q^wJTl%ujYE< za&qEgvO`_6tFp4HvZ*g4jfgag{KL5X`8PKKE!Y63!B-9*dv057R#q%dhM(B19B-sK zT=TGvHm=U^Dm}7#f{=UhH@Q&G$G@~B{C*yNsl$6fEYiG z++(Ps_kHHEC|G@eZ^h6aOHO#b6;CYbIY`m7*#vIbUE<|~!R%PelT8o8#{}Bfy6MQ@ z^$bv|dWJ@*Mev%ooIEbjzFwt(6YOsBvPL+|;yu~4jPlG+P988nB_-trZ-w{C>6H!g z%Ar<*}$GtPNCo<^D673dJePTVBM&mQT3HmPJ;xM2uQTu_ls07RcK(I$9Q1i z+@RGVnl%`fTjLZD*8J*m92_=nu`&u?vvz+(s6N}>iu>-(;rv6)X!e}6ok%2dvHlqD z5NzLY?IoRntm+u70JCWudZ}BdNBbUdRsZe&$o|CF@dX!;x z^#>@uEc6qb{#Q~ACZJ@U!P9Iu&%uI_JHz+H6TXbn1n=@?F^FUNpR^4to!P<`W^7*1 zf7rJ1=9uMR&2q10ygThgsP%;J-)-Cel6dd(<=%u+wvF8Qc1zn**)#6AdvHo!VFfP- z13I+E9d3-5YmB#JYuIW`sJgQ?VEkP$lT}?ciK{to0X%kV_4~DBV!1aS)i5#^-+5ND z_J4X>k~;;5nFl;bP~$5Yrh*|eGylkKy%Ea8hbL3tua}%FO?hI7`|0BL!;_Oi9iI>P zL=I0Lr?P*~B~5H<*IYxF>9*8`!u-`<`Z5C%zX}?*W_*yc zl8Joa-{wxC@^d7@SsK49 z7*OD&)_8SX!&As}Coti@t)WJdfS4<#wSpK@H*+y-vT+8`*L8;AKTt>x2x4eu=soI=I3-G^9)z6yTeVs5xrKdw%p-z3vFAuWN;rm^5b{#5Goh`1Y~UCPppd+ zOQ}$?@HprOK0(C-!E~&)IvxJ5;MN0n-uxWR-!BkC#B<^HaxnL(7*=Z+AqCijNIX^G zYLI^o7kOjvuiwIhpzl{-j0N|>We zL-h(U5$<07{MYRMGN?ua{rjwZNC1C${IdXOSY4OzW9>5A{ghhtyMTUDeA9QgUbfhpuEz=N%)_D-W-ydDFlugCd5hw>ec^2PEsA~9}RL4hU@C7LpD z0THMwoMhba;Tw(}8?)iqj}NY2wt39xO&fU2)*nB<9?lpA;hDNGr;zi1D4n)%|5RAa z!s!px=hIN$B0O$)&^-4d(q`wQbQV7fd@+^N-*#yfD&L2%$e`XB+oMNDut!#IO1BN8 zMr`bsoQLF%3!68CG+srQ79=8!vZDRe%R!`Fir5 z4VY8K&xTOqdc2+hc&JWjgd=hg#b}&<++@6H@8^55T<^uLXDyC}{R*yob$E@J3egYs z+4>_#9+|ohtOTnztXxTwpt)k$DzJL}s#Qa}4-ba|ux{!jkDWPlX8ls_)OGLoTK?e1 zjSnvGMXqn|p(bBlwsg~`rOQG=b;a;?pfC5XFYldoQ*=w$WB7sZ5N`5W-rj;&CJ^_5 z#cL-54Ld(zg*ZG=Vpb9S3O0hICfkkd0NhVb6$n~Gf>oe+ZmC?b)7_K4e6f22{CmA3 zbVx8)AfR8K2VHZGmAiA~tjvY@Qsx5czb-TiV%2jzzc^WW!G?sHKv2o9@bH}+DG&;( z27b10j-%JY{<~I#3G)OrPcR>he`sg_g}ohf_rlM}T8e(rF?;s>9rMq$-bjs!Nu}sB z$TNG6;~biy_F~$2lGRDPObCdia38XvE`%7}JkqCekdc$!oOU`l*(CV zue$bEn1N1qvXU`G1FC>7E?BBa#!o+XThu5l2UsG4NK3RX` zGhOnAe*M(}ypY2L87CdZ1uxVz&R zXin2qUe}2P&1#kd757%rAfsxsB1@qo`XzhjOu73|57_eZ$QwtXW z3&;c`H-_N4tOb#mzmX^BKeJ%LGf+&%#82;~HI97rp*In{hIQ{oo|um^eP%w{LdM2V z>!mS{+_UD*H`lBl*1bETOEl^+5`;Sy(LJ&slmyWH$ZpVJ=~ERpK13jK1@HB+RVCVn zXI)qWhSRTa)1gX35y&;=X;RDmUYD~xRcamMb*B8~_`wh1C%lCvO`T?qX9B@ikw^Z`lj#oZDat4ZyPp4{2Cr=sk zGWhG+g^z5Wld~#s@N7k&qVb8^@|HkGPR_U_O{~Otk{jPg!4=FisC`*j-vpqBuu`;z z)!)}D5CeeK0~x*_v6zZKV%+ioP`Fg-cwK@a_vTNId8s_F zDrH_#P7|C5R_{$Jd-Snqrwfy^7UZvwb^;LlxN7Z&<&#{xC&_bw)F+yG))n;Smu63X z^U*7>&Y1i){1G<8X9qkVyJHA{g1OHJR3D`R7y$U-eCr@;6X-Pjv-evk@H##7Y>y-T zpK4tlx_BK_J-_qPMro+5ttu(3@8;f`+wcvTdo4s2C!m7^So1lf}vCMnm25aD0)wsx_|%FDZLfg zED+JBvFp&pqC>0{r%?ANF!QxTTSXJY`u63$_8PD6YefkH&0Rp%B@9*o zWMgK4NrxWeO=>BdL}~v7G+~H_=A%09!*(oC9kCI9g%I$CAej_`eDq+Rfxa5b2e~7W zY*Pz{1F#pqfPZqy=OK?G$jhKLln-AR339`)(d0cGz!%8pH-y^9k;_CZE3>32gJE-A z2m+|-PJb|B0hpf9&><9+fUotm!jaXUfP#QD<;bQ5>TwJJ_oxBWTc%M(m{@Yz4BIlI0~OB`$c* zcgo+byrOeSY4N**!3RL%EiNuCEiQJ#7t>A!x_7H6Dk&{}cM!`rbwYFKRfGpK^6*K( zNA&NvlR!tPd`b``C_CS-1YUyTNq@4ztB(Mm30?*%H)vI$&or2dig_wFI$d9Ues4F%-{x+?9`!4N3%dPM^`=#-C~M5Nbg)QQPLFg55Dq zi)14OR3#vtzOpS3^{OgEIrdowYV_K&p4AWa=w6oYAOXxLe``Gz=jk$X^h?c^-CQ<_ zeB{XcMvjzAqTStkG`}=@WRW*E^qwJ6r%%+Qk1o+by-ZQ@=GdNVD|@bvkqQLTnAJTi z*Y=Dx$5T}3Bzy}b!#QAo9aV&sd%qe)l3lFthi_vup{;PI9DE;4%fiz7#z3uq;9 z4sV7b-he*(M4c`X>&btH;8cd-R7zA3RYWr}omfdcLY!geU=|3dr3_z1IXd`Ex4bg} zPT7<5Q5}6w)<}{c@k|!d?gu)m9pD%X7;?dIXgDw&7F205P$PjDUBE}B-IAIO3`e{z zw0nct60n#9W?trx>D5Y$KicfKkV#L+cP6cVlf`ePI(tqfSpp_&z!Ftc4?w)dZ?^g^ zlE&?=yC~NaaP5=i`>i*-|BcUAs?|=l(y39qlxUm^EIPx`3YE&GR5{fumx?a{hsF=2 zX_Z^0ajKLqwOT3Q!%a;oD!D?Vb*PkXl}aU*f!O9fQBf#~#-UO>RVpQqqHd54W}g{- z3bc?RpXqN-Gow$UBc!I%ttsYoqcPna(6_!yevuq!!Vyiq<)Jc?a>OGi3K#%WLvNAE z@GpNY&wVFl_ioTDj+9b7krS1G>x@bRp+9WoKS)aC^te!+Jvc;VBHse)NPvhYLn5kB zBx2*MaaxgpZ2d3}T%|M)+(PtGJEBMu^(oN%CZyk^-(zp5@e+ybUIBMOt5d^Q=ui(q z5(VC{bD|jsU)_ptW&=U=h4^~(&g)ko`HT_(%>f`CUtd4|#;oyJH*h=X)Vxi0kN+7-KYt=K?zS-*1U=Ib|tLF($fhK6~eNfTzzo{&!3 z$5y1t%do4icTw=sEz?Z-jqkm0CDw8)=437@>bwu!zX~z%B%+2}nM{d%PM| z023BVS31g0AmWS=B}2XzZ4*T0xMI<~7++zw8Wq~ain!Q{M2*~NwscR310c?w6(xwa zArZycS^#7~eDL6;g9mr!BzEuBJu&|iatSQA__G2QYrt$t2W$M9IevxIlV4iNtL$1H zClx6z-q`r^xVZB8Sg%DTl*W~JMXyTpJTiqpCo4el;6$(nR7@W^9ev=j#IErbv9T5L z1p#=FHe~tDW`CC7WJ0h(vkiTPofGjHm@#-H#AhQojYKpsW0oYBJvHGCD~beyoGKCO zo7q@xg;zt!Vb~z&1D5-$ zqTpOHHNp#(fEO+49<3Dcz7|Aj;-#qrnui%p@afhu8ClywOaU{VTCUVulPdr5oYg#P zs!c_kMw?pTxA{rVRI3b*b*9U#x>WMffu20K$*z>k1~n!my!c!Q()js)9jQOO=8VmW$@3i8>kA;HWc8JRvWEM|(RrPvAc`A#ySNFKM?!CMgHKM!q)m7yl zi(Fj+uWZlCoIm6KDf8w{xgQ%P6WnEA=Oa3p-wiv`%OTH}+tnlQ+^xGko{r|w6 z40eacUw~gL6}g2)lMC{4V=d%Qq$M^tx6|aJ!d#^ie)E59)^0s<{`>{L*gmCm;k3?n zor@w#%B8b+o>tg-ie1b{(nkB7-VM>||86Fy!`EE@xASW#mV7@H`@fn2U#qBq@Ac?` z`e$T*!ZsT5?P=`Ip!iY!(^-o5UT8M?YU_8c_nMn{^9KxQO&&9bcHU!JLh^ZJ4oW8q z@J`UbIr{)R@N}Gf$b+zBcxIq`yjfJr&jYWdgUL+yMBZ0A zuOU;LWbN5kk}L-BAUF7%?icVMUEN%1uKw~FlW|nDNN6@X-G!#9H|5q;M@j*V)mvnK z2U*Y;{u1I*RY*pOjOR(Hz5m`g4YL20@%P^xSXsHLGpfti^d)vhU#n8K8T;`%HFBNP zA5eImZMJ`id_Zj&aQS=2yVGB=sUfcV{oa%(x%aFy-GpaAc3+CV^eFreUd`-X8T05s z?Z;yHJKM=^mNR7BhZD?Xb90!`_Li4>et8jGp~$@Er%STnA2lMT zbjZ_(N4V*?;P;jKV&H$LqEZ6k-$EZ0lHVUY@%HpYxI%vAi_lZ#nH}pr2gjOWCy%k> ztxt~@vui`37Qy9h1Q!9eJ}d+pf{%AOggj~;nG^avS_XB+WEP}IfQIt{^reuIAIe62 z>+Bi{xh^y;)I@F}@umUs1sWSmP(DFU&qb$}0Ux{f#IZ9D3d33B^ad1uCmGow#P8Yl zYEG$q{d+?sR7(z3)=TxnK;2t0B|i_LsxC6Usixna9cuV{p-)&-LG`laypIa{JUwIL z_8jx8g*k6Diy5F4!hNF{W;W?Cdzrw)Mh16RW z@((5O>&=LEoI@raF3guu=P!X_U0;S{<}Ntn7k*g0=Fu2y^pQ6~^o_B)x+->U8;ym` zWCUkj7|y=%9T&Lsgb9j_d2K=*Njd9BKJeB|+r`k2Oz6VimwVBdzU`m7bHvC`tGizR zJhXs3`o@RvOi#ppqn!p21!y&BxJ(aH>%i|_Lg&Px3u6%0$M=?mOak&_=@P61hH+g= ze}t%dAikB4L$VC~OXz0zMFW&N8ffrRq71NGzp6kGYs~vN2q$A!hSQj5I|9NJK1@Vy zey!OsP8*#Y`$xU}ZAaIihEi2;Ve0t%bHfb3clLR5qZ`eaORnt`kC-IK6;Lii|4MLl@% z>({zueOo1F#vb*&cApA9zWH@ACA`#mO@9yYnmV;CT<}a%Jo8BkC8QRQ?w)X>kNo_N z3+91Tqn6WSx_lEd2;_vE-Q~yY${kN)r=Y>m%>}61j%L#xV<5kZWwdxU7dv$N(2S*(0EnWHtE)BeCpEmF)q2Igfc4@+9ni<`g^%*TAEvp59B% zE3bJJB!M!Jyr-tyJUTOfbK~48uk4xNtCNmf^!>o^*S~lMUbu0rVyQrQ^sRn9&du1d zDRgmF;W+84L(rOfbkM*fg9jfOIOu3?vH0A}&A*dRhHYE!afDrT*^O};=E+$y<=~z5@)U(yZiOTWwa2J(xStR84f?NwY7XT0&= z#>BnzbOpTk5N)^IOr{@4dE-Hf)+snii>;c%&DAvGB}3%n)N_G%k9uo*hCW)?*?4(> zeBVm?-B)?nzuz3Un>SNSW$~i+-MF$iL$H}Y)xqn`dxu+Jf9mGn8C-uoyDEnYp%E{L zZAjp&Px(%pAA1moWcM>8c<{zI%5O&Xpjsah{LF*!yQbP&svrF>?}qYS&F&@AY;tX= z?oHRx8S(<&U*Fua1?T_7&Fhqd{vdo827<6J;M1x|+N)40TnY>($C*T$+P~^^wI%d8 zl>v5wwUg-&nAZI7DR>k1sio-mZd`&}8$qf>yhac{yH1cPC{GD%^9<$b4y$uG@om*^ zh4W}E11d;f3=JP6(@9_<=?`d_yo0>aNYmiU?Yt$Sjc~?FFbm~%2n`D9D6be!*H@^C2Q0S&SKAl5iWzz66dA4sAnQ`F?CU<#c?!%yirdd?hj)*SQ;Z17WH z!-ZbVA(!!U;L_j&yw31_9uFuUgnQ6Wr<~ZulgQ4~^v!R~jC8G>io=kFhSS!ix_Ovik2De0apc>b3;@aWFO8SqH10sLr&J;hYJEn2+ke1=XKH7*Z1^A{*bI1u&z;9$>_b6sx(f z^HEN$z8|D~_*4oX-)V^tonTPo?MHm|Bv$K}0nGd=eE5n}KgiamBs?H)NPsg2E^H6@B3frwj^9ti;6C!dXWdQ3eQ69GY zV}*O2Mu*i-(C~x0gWrosB0IL4qG2eM3ra)g0x!1Q!ZC?70=++-wMc@^XV45^gC;e* zf{Fo4vn<^Q3+O{|H?6EXBTu?tH#TTJBB$UxylsjEpnO&PYJ>THxjJOMwmq-AxmNpUmaJ`Ppap-^Cf^4~2tp@wnK~Jp)=uYc1;Xz0*S_GzIk43HcfkI2`P9<25H@B7qInUbg$!=aM56|hD3NH1 z1&Ms%4XV8Sh`N|vV@HgI8+B2QH>mM(`~nq3Y_=L`5zSEEAje1ZDKFM`B;P%7`qfzn zpegiAf~QyBxBA>hzRuZSCI{=FxjZw8UfTPyN8f(?r7QzK_0>hcxLd#4H?UW};c8B! zBc0FB_rJdACvQeFxC%BI2U#JgKiR!UY58i`2zb+VP_1&>62QZD)1Ze$UDvNIjtVMN z>7`&`57@u3Q-HS(tX}1UH%B-R#sJ|6xT6B>?qoN0Y_pm06Jc*a)qD09kc>2EvQag-dh)zTeF#^GeGc(~p!!oBFj<==#ZN~B1LH0j@7q2d= z;m}s!$l}r={sHwhJ;sbLEh+07JFupFRO*~f)vd$-3#gILkkvW$L!`=)R%MzmF|8ls zcVeaL!7@qT^7JyO|F2<3x517?^N0t{B6!`3@=>@?IW+u%7vPIz zs($ItN7tn_7kBILuj=2w%3E0sCI1a@E;ft>{0WUsQ`qWeW{uvV=ST=FNgZox{ zy0<>^-}J1fI!!7lnA8bKhiat*{rs5mgBm70vTns;ack&*Kv?Z`#Sqa%I(vJJT?3pd z`~QM~c9JB#_7H@-py$6KnA2&YQ=~C8?SIf-s;#|xA`!2j1poVHp8qe}_TK-XO$^I> z&Z2i98Qn;DiA*FbRJHM&h`F>Qc9Zfr`N&VXyok*NN{ueeQU-#wQpYlpPKsTf_4<9l z$1;p+mR&@_VO}vkNX3DLS@yCUyzqcu*7bqUeQOtPVXH+)9{lC$#gGzN3R({5`M3t{X#I< zNY~fE6Pr|kXHJGS@T$%`G)o`@S-P<%_^Bixo{+~{K)o$`c5GB81s@r26vExQ@xXnA zf&1v$DJgRag5P#NQbo9lG$IG_BK7PzfK?_ffU_ZinPs^W4q=`Vxe zm|ag&u=49_kn_x9k8g@83+P4jsp=j|jWM+7XCZHGq0W-l;IEL7b2d&IY#b6Rz41n6 zdDK!1Wm+!mwiNv10cH-x9CYOlr?d`ujtO1uG~C!qe*jk>ev^SczU>AU?%m}F4L{9$ zh#GN$(neE)YYB_BV)&P(G5}^Or_6}{go3{=N#5E$Cw*F~_Ur74WeY#{K3-ygEG|LRfX985L?G0z-oU5EhVy8_N@Z%fN zY!t&08iJ$UA4GzS6O$QhrYeA!CK0?Tw;i7qbdr3Hhw`Qey&QpQD87@gaeCd@j3i!Y z2~Zor`tOIq`MckO1OC@Sr6B3KMAM(rJn2uvi$n2o}*0gTKCmP zQ}=$>#7)%a%E{&ga@S(b$fhl=mw|c}MO9FH81WXerh*JHphT@dq}#_Z55OfLo?(9L z>16-{=lWxpVC^@3!GxVxz`k#Lg_LmYNTB>#W(^9@q?~J}5mlnGEIJ3FBYiAYVJn zqe#yk5c-&R_BHa2XW=jAr)8%q`2rq2VI$bTA8edJ^920LQ?jQA-3CK~1gQi`UuVZ$ ztW%tZNCn%@VohhMg7_{V%I=`j@kUV+cQFF)Z&r|o9pt8sV74Bp#Bv_|UJRZVFI$*G z!yn{pp;O!&{Bi%Z>7UIguqVeD$m$Jy*2i^8qCZ%^i~MReZwLd&#Vix_)q_KnYr*yA z{270pF@0Q4(g!)6t2b0vciWf7&Ijudeg@KSu;)gt;a#~~E?Z{p3WD%Oh~$qdb+joy z&TQ4FkjvZ)J3^1ruU@~xn|)(8`Ay_admK}!kbdL3?-AZScD`*dFOf(^vQoIjJ8pOW zClvvw+KO*4jU0KG+O^&vsU0|cm)enA?h@E4Zm%+;;f{4KVt0-I-CF+#jRAqXH0G{> z|D=Ur=-mPb{b{qA+uGa@NwkgsZmZq@hcO#k^Y7CDFZym2dipMbcXRzyV&UHbw{gTI zV(R~4$o=03D17x#$ASL?P=>$#lc5F8;St#D&dna(008o#BfA z3v|wN-L3thwfBI^|FIr%*D?EUF7VLZFi`U^rlyFy1m5_t1OBj03c$=|_eV^uc1l|K zN_SGObOE&zxs?8N(&cpUNM1zw0N+^Pq1HVGhP?J7+zh9~%`d(JhQOG^AP3ZfoWqa9 zbC2$YFC3*Fa^%=;ISyw|v^|^t;CZ+KPK8@vdI>awg`oNQkopjO@$g}gedr*_KX3p( z|3+bs-JVmJYqLe{8FZ{$;NPj8E84AT@s-e7s9B0`7Z&mvvTW;7LK2sX0zw!3E zr*+gWzN3C*Ry3}F&5kN?7r?cyYb(cgD-N+N_Gcxz+LZ$x%%2zA`bgN7Q}9o!@NhfY zxVv@c66f(fvskL#PhY+sbN+mr?WFKKKKIs*V~_(w+o=}(eIEU_*@U3Fhix|SIhzZ2 z3GaVPctzO80vCVbUBYqvg{oP&bwXAnoS&ojtH`M@9MYp$Fg#vnz`Sk`F6(iOIpD zhM7XLzu#{ZwA5=t67wc&=p|NXfGb~*_t)-G7TA6Foax=SWrtus9O3_Y`a^tfQwaFp zpf{)s>i9yy{c2T0paXp1MIS%~;Nz!WI-Rs6{?v;nL3hyo1N5sl*3#ISn<$} zY7C#eG{+~9I;Jn0QB*Wz(R7DYm^LSrEOMmQQdGfo_(UhUqBa$)Ljeh*v1s}|H2Wdg zvzi8|RZ@Vr)3D9EU=(1@L}0xRB%fjfbUv*Pp#~v}`V45xP5li0x8#vbPJ9V(>#%;_ zp@qNxTsXv2-@FCn$CUFx{+9m6dQ&;jhCa8Ei^wH*@@aT6J7;3o6I4N*1Mqt6%@7nS zQh@`0lBy^aWb7@CvbefYC%R6|$p$Ip{I#Jh@};#LPd(%2chtKGM|?C+B(e9{v6h@} zvF(>0jF|SLT>f;ohO^a2vkCkmEci8HqvAsW(z)MB+UO81)(90}|qFw(G zo1D}WyFn+=nUtAdgr5QF0WyI?@)bDoV)yRd;Uu2qT^`lRKej<{%q$Y{6UiSLK3oTs zB!HiHr!{(goK_d7*J*gW#X?3Dbz@DTr69#oP-RTk>yz^)cLGm(#xy1ud3;HI2lY($ zJ5s$4cw9vRI7bd9s+O#zyI2j3i43GAPh29;wdDfRK8g<#qmuN7B)vY#pihdzW9bw` z$Hx$ic!Ut^W4VPuYh%Aqi!4AL4*Wb*t0-QrX(L~7;sY`%S$SXNYNixhOBcq-1KLfC{v}07O8$zshu;R#K9mS43qh%(CRon?Yyz zG-p#9+cG|k>TYDMsNTk7aa!D{BYBlT<)rKi^iWO}`S!_efwWi3or?IG<;5vmtL&NH zT z-!`pZ^xNJ|>iH``D)|lA%y-6bIk>HN?`;RS#Itke*_$6T!|97eK2d^t0zu$Aq{HTP z*l%^%oDTaf1B@dXM2zaN-|1mPJnVNqAZ!G_(@oA(GY(IBAdMPc8*l7fFtb}huVnip zZuuG>Z;jmjh&{PiLARL&osIE-{u)T&8VCUiMgkIk-fwolezWO|^cjhDeqzCvw4CT( z^$vjb~_6DyH$R7`1DEmMj+D2(T72W!C-?}pSUqLosq!UldB z9cS#fYP8#1*V0X%k~1w0WP1i{vU8HtvSM1t8{tpuc;!I*L?jG+vF`qeZ+t1weW%MOA7+MP+XoQ)K3)$E1TOok0LdUrag` z9qWjJy(>Y5riw3&p|?Atm9|2MVp3j;Cqq3b&)z$3W*60{ZmY@#GX^T;bMi&vX@eF8 zjg9>zJv=FS^5OQpL9q)}U1oM(Bq(3iXQ?Q6np)E|jWPxoNhST_yZgCHCDviXlyP2E zuQ=8$WnWe>oWeS;Q&>Bid&kxQg|M+uO4f(ovA=8``C)y@Ad+HKF0~qoh4}lgJxXTz z+yY&VK-joJ3O-|`8ykg!8lAwMKC7e~NoJ;}k4jEWOG`~jOD4%AUy3g^H7$uU$e13* zGXfrzP#85NbR0M)=jTmw>>f+;CfLNzj74Bc&@PUi#Ejkz99h`~opQ1qJ4Z7u(NXrm zl0^Y$lx;kZ8cVuONy(|cjn&{%j9{bN^e%LVVRG5W4vBZOl()H*=#hL&DM;p%nYm9Vl-NiJ2MN2>l*x-LwaX> zRnizh3(3cyd+u>Ei_B1)lJbU31d|%`5>4tLm33rrW8>f>*}S0In3&%TxApDUukSWH!DngMgLthdLe1K?Y9SU9YcRLT;uk**o$k?K&Eo)P^)Q$O z@Mz;sXYI7IR0BBr;S9D0xV<>M%FVX|9c!GJ&yf+fOTtnLdXwi&5;Hqg=yKv4F;R7wlF`fvjq4Y zHeE)hI{m(y}q(NO223r{yUKYiiZ zVZ(a%-hOy%ZSB^>+k3O}JZD4v65>B4ga*ws1n>ck-RmTD_{qu~$?|?>?NzY)vOw+QX>`ErC;aJ7S2EzeCDnwM_XG3ztv#jW1C!xH zaz1@o!w-E{QY|eB_15soK9Z6$MG5AoAA>jfbx7{AA~`aZ$i=r{01tarXW%wNM-gL3 zVFN)yk38s6;nxaJkTV#BDNarYaE~o(5<-mRy#=%TS?TaFW{-minZYIR%Pp& zL=pT02t|*`FN2aVlv`nC#z;^yZX7(t$qPGSKS2up0_txr#1mw&mZ&^7MvezkBIp5X z!p4sKsLedi&Jkznhyv`1XFJ6ZxEtB94JyR-`5g@P`$Tx=ZxfP&au9soOfG;=K>PlQ zu7xA_gTCOkF=1m!U@10-v=(kEFx_8-!oL4q3NL>b`Jf&KUx)8U<))6j3`)l( z!dEWu{uI&WV{o3}FU$w1#fd~Fz8{Gob*RpOz4`Q3YgOJbemfd=a(6%~=zvXXH5fl} zBGm^z{>!GBeVW>BT0MaAyMFrYO<#@y!{LLd#miB9Z#=|dcJb0IFexK{=hdq_J7q1S z&ZAahtiW&o2A}GZAnIWFY9@>7qB7e zsErtt2sbp>q7G)NZZpuun{pN5>~9G6t$)E4e{L;kZnIf+i>)qR=Pz*Cm%nD~H5&A5 ztJB#Z?=abgZ z14RRtJ`2+_{|cYJZ)s~QN?xCvGdm|UEiu(#sLjuspOcvy$E|n033t&y@Rev}z&8H^ zX>BbC-}S_gEOxNUWOmm06dv-}g%7-r!}qFaz85dzVEg?1$hlQ)n}gGF#4sX%NFN(` z{Ig8dt_S-+o)puiq@+thU1APU!SB~0`C65cT2s`eq`26d8jT>(tN(+~feV?R^@3S& zNr^u%J}EUdDLE^1NxPHxfLIK+)h|KK%=!!tvcz;bFu37Bmx36z=;XR<*VdgBYTTW> z9B3H4uO!A=df$@auYHD~`s|YW*O2=iy*WN*Nk}kf-JJ?qH;41t22^{g8=54jP(g+R{i;GGM%&51e?=4M&G*3)LMkK=#wKdVvh4GMwRt!6>M z-ii^SYVO1}L(lzaUGIBWt@pZ*A~k#EUNs{h#vr&CcrfS=j)2?XwtInx#oH_(r~SMa z(OjS-q6=giB_&e|^#-Mq5i1G3{G;zKeRnREkY7T-DWLu0Xd>9*;$@VH?%X+S(EZ#w z_|3+r7c6)hKjgRPfEHdo_aeLsv}bYH!l$3cYisRgstWj&P%L2xvHYV;uj6vg-BQY} zIp2~Ys{3`YjCYz>&elC1)qMmd8-eRSf)S74>Rx_C-mCT$!Q6Z)Kg$pZL|D;Ly%xV)@MpvS8Rft=SMKafr@*`1IwFS`> zU!t(Y8IlC11ewP{^I}}05x#^GF|H9N^#~$^Egb(Vl)6m(q!I-hk3$ztQ_(V=B04aF zPo?NaNE9e$&Ub0}Q7ALHPi9JAw${3K6GLsa_l2eAHjCh_t%bBmvq00EtE!5Ms&LD= zU(`B=&d;Oi>WN@LT3T9NUOvs>_R+YxHXClR-Hw}Fd;i!zU{YE}_ih;(-MUZfGxq*k z3A}ol5s3JzOn(0pBUgKFZdor(WIJjjr;Qc3wDA~Goq@~IktG8IA z%@&ul%IUILtTvOy)vY|Mb5fe$pO#vX`%t?x6#ehS=1pz=l&q5}jnT!iF=ZyRTqcv7 zttBzBc5^sYZn-&H!p{>1{ypyBYW*3=&oklWucdKQ8lhGL1e9g4-#*nM~CqA~hy@D(HFRUyiZ z!e{Z_e8l~`X$9@3TUuZL=p(osjH6y{4Z!8(`%8v&KiwS+nA-y9x6H+3;8CK6rs#D@ zcELNP;Uy4%(C^gfxC;!TNjrC+Xwd7oYr<#fsqqbys$3OW=d&tYRg)Ta!S8lY8`LYI zmMo}E=rw2>P#phD`r!K5)Sd3!T=&k@*!scge>r{zWL+KjOnteb==${{LwWr(1Fv#C zMZ~@;AD?II$ivw+K zz!ni^sIE_7PA?{X$JbxOGczadMVVJVy7+M*<2buxd@M-}pRfnzZrjANeAvcVIByj` zd8-nViZq|b;Z(36f0|Db6p}~CJTed3A6T^Lfqr$1&|eK(!{gM$WOnGq&^PecFz+bd z3&wylcmm6Ek$kbe(x48_ra>LnPzQW(2mY1s#TMLvWm@R*)@kqyuo%t+nyH~St~E3j zXi(5%-ak-a6WrQ56@D=temgA`I?NSGR)wYk&2-fNT5igiUbLGKBKZ}cA=cPg>u^GV z?>PZ>T@W#HLf~Y2!FOOj`hN%P1l>TlpAN#wfcM^efVUhsX*npH4m*Kor^6GVjJguq zL)L{Ry!$Te<#?p!Hxqbg>BkU`%>?0M?~V63NDphl)~9gmB!KT$AmWlUq-Wxui4*ta zz1dva{~&PJz>Q#74ZPB~xcSYG@ry~J4=w=buo5kG0bV$?=B>Ba9ENXey9|RLUqCo7 zf;V}!to%xJ5OCNl%<$qGqrs9M<3%hQRm#F@%g_oC+y8KB_G^PDT<_DnY&3!*ixpqD z4HI{Oq*GaPzAk&g)^qTUof$H>>gIG-$DoD~Favm_*t^4ghyw5eoeiH>=8SR^Hg3(% z#@&E{hB5^n%j`BhbSd!IWw)I^aDlA2a3Cq;T4?0=`PA0Xu?q*dpaTix$BrHQ6+8=H z{+e~6VKI}mJT$PTxw&TGYKOU{#YRRo*EDhgjWvBU7xjcYD;8yrAD_9X0u1PhT%5iE zTTl8m)|O5pD+k_EGjLnIsoVVcWQ_r|SKR=(y7T6AsO^mrx3nbg79Vf@UD`qq>ri<( z{g#Ho=Wp>+b!^)@wywQ>bQ>O`*mKqSL~r&~B(AN;tF_w*8@mw8P9v;f&vM|mxAI@X z7Tpq^aT5Lne>{^?3-X)vVwv7-f$#p?NawfVoU@jnO_US;@C`S2hebzd={mT{{|TLt<#z`X z_2q5Q{Qfq-=)a>c>Ta+!haue>{^bq%Ur-^{!A>`Ke^ul}3}RnYZB~BqNJrs4at)w5 znDQonC>S)Lb8)``x+flJx7iKgKLBV1jqvxnuz77TqhC>8ZSPKn{mCjQz-&W+|Gk0H(h-OW5VmBL{3_83`>#&T0 zZz$w$f7ZDpDI(Hcc+tWN*ahjx3I@9w8j0qi-gs~PVRIZs3MDBnbG*ytGHP^6u_V=L ziE|3;2GzNxS~rEn39+`KS8AHUEK`Xk={9F+sWDoj6br2s?T8&!1(tr@V~8R&_}x~C zMy;1?EHo_^$rK3+wOV83GZK*%q$qV}vBt{7FJ$p*okC-#(F<7=SnviTkO*RRwj@cE zOlr`$EM->grrchNHuD8ZDwV3pp;qfnR!^bDmMV&}>aAv1XRFS_muQWns%)|4Z%z@? ze7#%|ty4ssBuTGX}^>C$96~Z$aKUIdsyov?QhzcW|T4-uvfmj+A?PKz{9L>D9IyN z$kE3WaZrF9l`yL36}W2nx=MxFtc|f(*d1o0m30aS)eJRx^m>nJaGl?8kI|aVR-@U0 zqF|?@a@}w+=1R{|3D>{6BV%yCR3eR5DWlO3b}3cJ1xB{!_gS5gCzT3324{{@BbP{| zI!!01gLONE#u#~wQRtA!HO3r=vy(AJZR3SEK%@w67=El~Wj+Y7LIE4%bja9iJ-N5xg*t4M8xb-Fy_>~{nhk1O z+Tap`TYR^~Lp1*`xlJ*o$JcOTRa2V9E)**z(Z!LAF;<;D&tpae9VPNv9hq?^tDfg_6d{sN67aQAlvk~e zk|x@0MRr@7R2C&kvgs0NsgUU17hm{?d$J*}e~%B~sx?YP=;r3y&hBWB+Js`t^d=ih$9kA3xfnbI zqCe=-KQ8p~2Q(uTYK20EjyT8<1QIEq5!uifV~+I<^fdq1Bb;;g1i%p6~Gqc0(cO=HRoF5#O40maUyKsiP6Oil7oPtFVC2a5BZP&zLAKN8J6(!cF)cP^NGY4_ zSvVcLyC;koH+tg8We;xIw0zmUAG=q*xWR#>xWpdh76lDV2^0ab|#40k2vJ@682r^caIZdgG^7&F5o4#MP z?CbjmrgQFP4?LB(VHA=hw*vX((K*@K8RN#l?{;i}*Cvn6%Fb36)}$nNkCw~c_z|oW zs57#P3gV)tj~`^ynykXa;uv#K?1;f*@LI8F-)GC$Q0p#2TGH+UnP7#8Ir<8janghQrl@pBe`Z?TEsr+t7u4KpjCPUXN)Z5|~c( zek4Z`Du2-H(*@il<Q7N#Xs2wE*NGVsV{>zz#ahMS$Jxq)}iSqCH*|h&moVFGBqtoV-yB zPVxopB4xZ*kPHsPDhfUfi+OutF~bipUh-36H8@0tex?sn%^(3@5(@CDqsk!M4?iK7 z!H*S6)d=_wNEGn7)kyw+;0TQec9lvQ`U}r;<8!=M@HqOKPXCDHkBh|T#4p_W8J6Ah z>DuN>Zlu7Pih)}vy*5=(N{ub)uvcYj`Rs-C>0DwoI&cgd`)QL|BKlI%q&70rv`I8! zJuB{?y?sjEHi@%|QS~@QEiR{U-SBlZ?47ONaP|DEbSxD|vT9Qv^Rz2sVSh3JkGpk> zbZH_<@{F-owL@oe$(1RJvT~11s^rrmT1*2FZHf(ABtQg&C>o%EmJ0oa7P?bRO7a29 z>*Ucu3KWC21Y_ic}4wFsWs6TJ?f#-#Pi5b1@cW%!_o$5(k^KXrU!YL-N-kPC$x zoshm?sZQ>cAykS)N<|bij644oPwZoc(<9NSn@Myd#uC$rS;S&u85#k!++s-hLI}*f z@@W;TZWU9kmrTaeasW7z0Us+GMrK2H=PDREHo@L>%f8dF zx8Bl$pbUid0R8DSKj^t^Qp@Dj*yNEZ7SFmedt3x%plJo;<83xOh2Q1ck$KPB#(*2Elj70_}Sf$_i$8^f|_H_xtAoyLypv z60K711>TbQL`jsGaW{+@K9g@5w`|7nZUZkaoc?3|uoudW1<6)5m6YLM*BIl%>su#? zP4sK@V}yz@5H>U$rXegK*4Y~+t2avKp`JS9WN27uz5+Z=O2~XN zbQbImFrgdwle9t>8ZC*IOAseUGb*XnqL2!uavrTtoJHnEi828w5ST@@;0Il4AZXTS zlTqY9HmsIxSPiBsL-Rt-C&}qRs1E&-Arg~$ttSF@nSx~Q4_#--s}c>(Q=p9H(Gn@@ z_)>Y4L~i|68ahiBBDna$I%YX9k5CXg!b-Ri9p~d+dxG0eRAU8jtp-ym?f3FEIx2|Q z`n|x8;bAAxqp`cvF$a)_nE}?o6yD_5@!1&kEga+_36z*WS z3*x?rZ|UEHYArf$7OtBQegmf4^a)ftv_dM9 z$fK2{7-Wi~LT72AFpA99n}dN;-46m&Afg&2waO(?aw(!DDWWfwqk>0k5Pgda5&01$Q46LqQeHoV`4WOa-73vza|4YV zH<07*2D5Wy=7jcp=n(e3>13$&p zv|AK1sQ~>UBGjmz5jSf?+DE)Z_n}3sl}~QaCRE|!gaBa{g1z_jMXx$WA&~;Zk9iN+ zw01ZXp3s$)N*qb)#qs3wf)+J63$&$Tp)?kzgj!vUY{^D%oEIOZBfck&(J#_s)}}(Z zj5Y(m1iwQez7C}f892)rr3=lN7PlcSsLL!Z9+*NIaWPvTD-%#!r72|nq?=K^?AXFo zTLO3gB1NpBkJ6p+4l;XFlvfCXLZGAm23}bXGhlEzc!m8!Uh*moF2mks*t-m7pf46L zj}iGuc3j8i5ye{tCcszVgXsSi*nJ5qG;3WUrdb=DphisPAE~DZK6Q!^4InBM{>E*XHsZPy3gQGFa4+%>kL}4+A3EX zH(mS`E(ye$b1S2zacKGw0moLSNNO}%6k@q`?}n4F>p2>2MM9f^zRI2)WGfU|DWcj} zj95*UaD&LOt!ZzhU2O*isN36y4P5rJnA8HJ$R?G_fBJUK8iiHuCZ&3t%PNq%OgdxV zDPPqpG^A1?Bh^ZS#bp%=mHN5orZ#GIa;-51MClaqlHu$A_75?A)vC<`v{)+9#K^C} zmtWth)TbI1B;o}1$|#e$;aPa&0i!EgBDOjerbJ4j*K4AWTzVQr<(iGDHm}r>W;}Nq z2tE{ZXRpVib{Em_vU*8QRvWJE-`(!CQ|+7CK3)Kp!Wyt2oCN#f9`Fn-4DE%5;2E;^ zJocQ&?(@`3-~j9$iC7tl0iF#_;Ua)%S-7{CPk;{P@f@Th^a&gr`h;|VmDI6_i*%xK zGm?fPWO&8c?+kXR9r^hWKm16J3oXAET279;MvnghL|nujX;DcXTS-0ymcwyiMaQy9 zCs+vFC20M+{%SV@ooftntP;>*}O9DO=m zlvm;O;$IzBm%y3$P$s;Bb?e|IxP0BZbszzZTX+5=cnKtY1QK}r*1_eWhIM4rIxr3- zthrP&FQ6G)-mWY<2KdA6> z3a9ar!QZE|2g9o%lx$kl<6R3ATxkY_E3T-^7fm&W(eP95;_RY50J_bGVx(@$Y1?g7tc?b!pm?b)+uWre zqRos!&IOTs^1|}FkBaG*5XflB2qbi~ot|1esVN2hHBBm> zdfIlc7nJ$lG0#lFFH%$Siz#Q?UvP9&bMtTP8reMdE|y#MRBuyLW%Y17>Lv$nSs~+V z+G4dOQg_Ub%l%e0-`li&JrpSyT_Qzli>)dtvC0;$R4A0uwyMOWDw{(lq%NW9Nh4Rs zS?vyo-4+v59}{E4PN!QZ(I`+-N+@&Onbe{dk!(_l&h5M{sWnb5*N_kWX}0g)yGHN+ zS+@VIMhO1Zh;{~r;U8W@ya#v@Z^rf5dx016=iyb&dw>`9XGbKjyQ0_%sF(zoRIV4r z#Kd`QSxMtk0xnNnoJV97sAIiFL+lcWl7(pay^AeVS!^BcWVl+?o}wIeQ)u)i1ptLTycBo){@d+o+IQSo z|J^p=!WIthorvFIS&~b1mt8y#g9`hddE6yY$9=P$*? zlt>h%j#3-UR=rWh`eF zaEqjB16z+6QB;&jtukQ`YIwLT9sP5ZSc%$++G6A~VSUj$LrgdicqN=in!2rqRB@-bt@#eEQD;M*=NAHQ$t(e9;QkH=fu{pis99xp9(d;Up%lW%^< zEI@pWki9p;Ed(@BxoH)k?0^yi3fPlL39teyDS><3Py|J8@Yb`Twcyuh!EfNVXTh(b zwbUc?z-!Py4-N`__3Epnk@_z5I9wAt4o1Q?WH&I9)e(;De+ls|?(Ml#_uizU>JEn9 z0cQ__7r+Y#!P(F|2k)`HL|+a408fT~1f}pKsQ{&<{!cfBNFwFt_so3yXT-62@!jV4 z+`7j)<|;c-34sdLbnC**%#;+JUaw0@$;|BNnf@#}0*ar7Q84ORC?-cxU+9gAX&Kpt zow7615{-J!*Qt>8k)AMgM!>Z!bf^wE@Z#H;+p$30HW1%B(5n6fN6Y`DvVV>}@X5bZ zc~)kOz!TGuh2?(}0LQw4z<<5rI{E=#U4aT_FgUEv2O z;D;wp0M7|<1D3!aVF^&cAHgZ0AeY}kW_PKJ&d1kz`9ZJG1R^yEQg)hhqYtW!XL^&T z34Nw}ZY%lO@o))9o(PiJFSvy2Itl%w4;6iDu{Yq>E9i3tG+x2`ypi%rf<{t86d}bH zmE6GZ20=i1-FAKy&?(x00sabFLfb*h*I??(ugQT30AR)KFxUtbzq|~8EDzlPr^;V` ziJT2fUZSe+Y&%J$5qf4J{UoOej`H`qffp5`(xLKjn*sXRnT0U#;7)i94&QkY=8=g9 zcWwq-Lf(b22Nm03c$MUa5(z~pM%4m1)Z?B@~TNnr4 z`xa=vy^3#)z-`!o@-(A7X;zz^uk!`HGy)wGhk;HA_yB9Qd&$pRT7GD0fg52`3wZk) zc)JBAv0v9v0CnoZ#fuj%0Lex8GieHa38WX{FYxD!Koa_jG{Rpl-Xf#2kP2tZD&>dE zLV`SX37jf{#Z9od1e^}7AjiQj$k7B&m%uLMIPxS8KNDI`-p@v80%uTU^8U~YHbN6B zqX3P0-O!kaR~8VyB|r$G(36NBs<;QZ1hG4IWU>fefqw;?rlGINli?8HoE&-zxIr`=It|H}lP5n6=I;g%z$v@o z^oJjY(|5xu;DOy>K5xM^B!VLN-pCkGC z8oOqK2RvLeH0)7zW65NE5+U@~*s-Cvz_YLunT+7^)bm&dem-=D?D9O8f}igw>)s8% zb@zi~Xq@;JiqUvcasU0W0{x1S|3`3)z6PU!5>|}Ep-SZb4gLU*-9HYc_~DLxZ-pCG zw;xPdjJw@p_`v@C@PWl}4H&r?OhI|#paUI(_8&k|JLae3^5b&k@(kyS@|^%=C7|&~ zPy_e>2)CBNpC(LzKb63(Kf?W>=10(20%WL+ecZe8k$3w*AMV|R@m%_jw4IFmrB9*K zQHY-1I@+$W(|k9gb`>9=4x!NC-~}`ql>Byg5ce`FNLgF;su7Z}_2?_k3-8t)ZT-tx%W zg*;j>y1$dRb56QeQ({%q(mr|J#8IMoO=2D`9y&KlB<_~iM@p-$B^qsdPG@iD(NdE^ z9$EV6E)-aF($SsoNI$_u&%7cf zY=YMYD=D#&IErro2Vub?tl*^L6h-c|JDl7`<<2%Tzmvo{MU(unR?6*fBAB?P6^+vQ$`U-8iHKZoOP4;pV>)XYPFLzj>7r*VdBEZD>NR$q zOT#n7Wc4m9>zx&2;AvbsyGHMIH~hti~jdK||{tNsZaL!@TiojmF?ft#Et#gxyJvS$QLz4h>IZa$$EkPJ*_W;!n_kRToWEwlw-DV&J&paw_o%}W}hakl+vY6hk%PnJXQ={r=OA5l%lr#=y_7qb;7VZhLDTz6$Sw43j-^5~a zI)@JaKSOZ$mAL}GRAMk0Y}Qh%4gFGjzM!+yR+wxx4bz+3Ug&x6QOR*F0=_fag}v+> z4Uf!lI`wU7&H7;`YjUCOx5`Ql=SQzx(N4agB`*07cSR~fyap3NZgyjmLq~^^J_jq(tq?GwG!giBxaObE(C1c~q#8ky?|i34?WoE@$MW zUI6%UVY+)->F}y>#<%TIaSgaFGPaO(*Ph(A_YxTl_+%DCexVSG zj3NQU<1qq}UMy66K{6LyYIC|)jTgk#+H|wpMHxwE@?@p8JM`bvqPtn>{8rF}}B}!{(l+IzBNr#%@+CY~EmZhf^k(D{bbQG`CG5?}TC}RdtLV z(<3nJv|6dGElHFBkejqxGbuuU zC`2q0h)APWogq?dwMKo8(TILUO?tK6uGOlI#vHv7{gQb)jZ})Fip63nMxFpT+`Vh! zVr_Q0-0t$VZ?XD3(I~{6h(^^qkImt9$0Vh>Vr*6q!d*gaY^U3!d#!SLr`XuqUM>fY zJP^fo*q}K|a$JH)3ByDw7E2_0AtT}ds`f=&Oa?U0sik(Zg@vbv4MKFS(I9Y&r40jV z)JzOcAxbOP3TYBrREp&yMqrRg#A0O_>yqPA(J8wWWfgBQS)zSv7U@w4=^A|R5*vm% ztBERQc^Mt0!%2lK&JpIRzud#}33TD^Ac!)cNa#-}(n$okJG|jmS$v4{qoNSy`z$JV zq&u_+wsi-YHk??jL)`(}MF{UF7ziIxK@9j)`SUJ^XSg1#y7%sbj^dUxO@Lj^q^b2& zeg1g%&+lt@j_p&_J&=heqs+3>{q4@`du&x~*$QXvf-}IpU0}}EtzgbBFb~ey1!wV8 zT767Xb53@1QjA{9y0dezdttOAkg={;#k%aw=xElxlXZeof40XVU^Cs;v9N8ZFsyqW zkx2x^L&O&1QQ{c!JaG}P6aD{ACXoR}_!Nf99pQ%+d(t|m%+?iBo%P#|B;aL8!X{U2G4&SmQvsw5f|`%+$O2q zXm=8TI6)9Jq~9evVfzH!Jr91LMyKF@gF3z<$o=a0UcQd|)j0iL1^0_mDEQnjNjnAklCjO*$2E`J{OMAl9n;+X^Uu3CkAdGV`E)Z1 z?A|@M`2e&@PRK;Dg&SM8q4?-W;Z)EH+M7rP z(GOpv!&aK`o#8<@dQd<ehh!l0YVhuf`3O2;5={u zKcU|bBFCov$o2OF2U-r$@50yj!6TcRH|^cKv3V1GY#)3B`1XOGo0>Q7-HU=jnx`;`6mR{g4ASDe79&gMD-A&%=Kp2Yv~EKi@B>7RQQ$zoW4FoWAFQ1Ucw; zn|mHw3NLI1nw{y*{+@@HY}~x`P*3FC0W=%nMdWTCf?@#wM)>Uxf3vUW;ia24qEO`A z0l(c00?5tn6YRM8C8I*)6+XY(aXjMd?lNewBa2tTo_>%5M|hZ5@NbV2X4Zn7_HNQ` zH#F%Kkr|@R_`4$5VHBhPFquqA$^Jl+O7YWA3RP0TpPYn(%!$cjNl`<|m%fl#HX}NGRd(WSmZ}PW1)q18hzmQ{jx;(iu~5=04u2KoVC*lx*pPvM8?n z^yFmZFeWDjw3-LuH~c6QTO#^0Me%{|L5&t=X5?Z-Qa`v9rAATOUZA8v$0aqH!fD|* zY}!P#$z;X*O@j~)s_FMpPl+OAti`M(q6?Cuu}zxr-2zzKoJ1cl`T&*ZRyc>jPj%SK z?tlrZ!z9uH5p;)Xp#%1)YqisBYo~)p;f&s3UPuCG^#*guZJh5()^{pXrsDyUlIh0j zWE2T_I$7qOK@aEX-9?tFF4j)A)Kpt1YnLiZky{VGyK69&fD5e+C4u?9;dHVL%;^nh zf`zF<{!r!Yk3gmICXG(=YE<`jgbZU-gU*;3 zXD~J5;B~(vh$_cr%@1X8*>_`qz)bjlZx9)wv_Y zgr2=EH=igc`VbAQJwx_>V7K4RcKq}}HlQ^$cdi{DXaHXJ02+5mG``UYa~`ZQ9(=hG zKDCQ4=>S3YR1yZa1yD{3pP~=r4V$FM1uCBkcZ-2$bBqWM1lvU(tN9%4$h# zO0#^-_8CpsM}8M)H6w@B8WWR)e$7_0yCu$RLCK0yGV_hitPhaIC`U8O5oP#fF)G@G zihd9IK-XeaH1g3B3$F1X@UX~h3H4_CNNXbw0}sPNDC`!UMq(tV5rvNggFxFU7=|CV z6B0HM60sP-_IIG_u-T&mOgr}(+Bujk#JTYtNwrBXraSyn3;d~_ zt(H|YJ&1QBFz4_ddL;cj(ZrX?@f+US!=9@s%j@Vt9upF?7{nOi1GNm%6+L~?b02!9 zpl309Hlk-AdQPF|74+bX)Fu5-67G+P(*#Ax*~(G!(`f7xv2LCGBq2wS^dfqaIllq9 z4Pm$GBKO{LF(p+cC+s#t5x!IpFiz}Ix;TrnJf#M`cANq$fEoR-H~~){Is{LiAU`q~ z;5nFo0o?zL0sTD>?tcU3!?OnRD*OVU$pGfZLCMjh@KkG05*VxarXn8n7?aUn7SmQ%RJg3D_Oj@M%z+XTwPz4W%G@KuWu)pLtZ9eoC9w4uR-tYi&Ik<3k z45MhMrXFL|_zpp=EJQuFpHct8f(wvGpqj^vyt6BKJa{nt5|9jfceum5!=c*9JK``E zLtJCE zk&L}#kS0OXEO|uM3h|xeJyUg>Go)>6>Wk5Un#WMQZ>0VfKpTS zkOQGv)^V+TfWo^YI(ovu+ckFSSo)I7#kZaN7mF}AZBO3bePPw8=srj2d@=Jxw~fjE zZ0SjeAeEw|S)(#e8Yd_77cVtJEf}%89D`e-muj9Dyy$ZS>RMCesPE>$qiy9J?}PjW zC;ZRM3O%wU2!XrIpUuQ9Ru<;vm|t!m!;=qL+NjN?1Hs3{zcUH`F@fPAlPW^ z^chpvov3&;KKR4XJWYhZ>#yXjaYosk=8FcQe<#0)KwbR<0NOo3x)%ez~|FLx971QBuI@H0dNHJ2v;| zD3n@^LTA?s@%E!BgSp+g!F`mlo}G=4n2X&)*<|_$aqzHWa%eAM{zDPNE|avH7&qdE zVd_Ah=60!5Sryq%hL&HRi>E0HmGi2H-qo=B!sl~gEo>1lrd zaKwvRKjWFni1b<={ru+4hy_x@xSOprVYZLgZY()$baWI9K^EYwXR$B?@+MNqe;Hi_ zXSAPDikngI?(F85{Ox9kk)flc(w*pY~P7u=_?=izXw%8!9l3B+f}eWnL9%Uv;AXAA!Vx#gpA(lQNlqe zZOe`K$JC8DCf$wBz)Wxv_|MR0AJyNg5GILy=+owFU$- z!Rz{duzDX)jC)(|ttH8O9UJYg?%smbl#;MzI=yDs+#V+VUG0Akc+wtI?!~kt`B^8N4WCC zgoky`QHMH;53Rby#=vj~p{QezGzu>EwtPqEA-}J(>bn+m!GuOos7h4>dt50*YQi8P zo;`Of4NHWH;;M*c+z)G@7T||eUBU2eygPQ>-cBoa^*LHxV9NF_7FS-W`7$-ZMhIy0 z8;H8MuJ!$zi`p>tx6!p@qThWOZO~E~K~NDBZTsUeBIF})*+xb`)7D+&kpy(C&0*%! zn_((i)`U#!g_4Nqo=BxPi-p2I0&$w$j+!TyeiNTzb2_EEM|_>NlOvR)X8qg44m4wQb?y6w z*TLLYSpT@VtBuxuIq&|lk@jC4@vA#8^mbggOvkI(4PRv+{gpq@^EIHFIZ|8Rw zh*C5m2TjsTNo_%TSjR`H?OD?15`BLqSFEuo)pavoTV6x6m7tw%tXiGwmptj2Cp3@K zHUjmltw9uIM$4ys7tV_xPS<2AMjNV?!^b0!6DHfAw1l17o))|1;Fy261zpB`t(#&$ zY$~Os$FzH&oPb}wR_{*9`0V(EXI(*&Hlp){UZUM(!;f>BXEAbo=^xW+rnmgu`)jp#j2v2aSJe{`Neyml0X`c+I{X5Ss9jUbapfPVf+TlMJ zghKrNf0DFkZ#eeOLfoT?ly?J};2J8W8xczWg|D$46?%m3%XxwIvhue;l*E-d@rv>vCtkj?%@RnE;7nb& zw_OELY4EoiYtjOc|9dhHf%y{w^Cy0p1GgfYUJ3J`gkK&GyD$=Qt|kMt4)$O`vf2EaZZfWtl0mCrC zN8tMp7K(4wb9(raGCIYnYuJv*jID`9gQJd zmIGGixu;{OXJ=?=r?*dU90l2YnEApSDrg)Lge!sul@bL-hYke=111d~R1DIu6lhQ` zSf@gyL4))UPWd0We*h&;L623~Q*kD8OCupdO6IppQbZXQvZ5kMLBa3eqLC3%D9GsK zBs5b0Q(zSGU&zULygKV|2RzRR)B52Jl6XJAq6aK?8I7#D?i+wWAnm!*Bn;&!*%9>F&>N2~_z40`GG zU2}_HaARzyxln)m7)C02(@YtEPT|-9IO@puCNjlhdJ*J`(QQ|k{U}8l4>?H zM%%~#*Wr#zLa;}B6OD)l&?Or|iip(DZnwQVQY{Vqe%p#Nl5kF}$Tt>KJ@$`p<{>^X z_ysffhjUH!`{x``Hr|LyZv~W{V5QxFtM&DxyOXw<**R0Y=sQsPt_-yW18NifA#Wg9 zPaDzJ`AN!)M@hPafO4=KJ{ki3==a{VIoKWD^16O^m+>yG-aM7X)9fJPyBwIXcpDqs z4uDn=R)*82z~i!Rwz(f^`h&~wDI}u%Z4m8RJo9z-P$HUiCr>Fu&cN%S1n#<_h)+;sp%RS*cUWyrOUgy4ijj4ohR4q7gpIieGqrdqXUHb<(z3q&x zH;Tt*uw5$MJY`*f4vkM*$M!z&quT2MC(JsP4gv#^hZ%Kw++R9e8&7M%R|y+582#6Z z|3x^Z6ae-lLe>yO0q7%D0I`?x8uy;+u9j?q;|8ZW<%^-NN^Db9#Pc;IB3itI#W^)0{LGO1~k0Gl< ziJcVXFD9k#{vWH15J~QC2?3>)zOacb?DwNRah-s78~q8bLWfU zBle&pA15atKhx8D2Lgerqd$LN}E9`oxBF6UJx zYXBb8HLHn`j5fr4Iu=@>%x6dUH3luSkKJilF}gj9pn<{|GSD0oG8jMjF5%E(NH#9R z2Iiq{s}1~b!K2x+yH-%@tHvj(h}v^qWmG}{sl=tG<~pk0njW<8;z< zudggOiBMm>suTLH2EY9-sDBxq-q7c6cH4{F-tX^!2aEH@Rd_40Ligj{;8k0EU7;&h z^T7At(wJPW&Y!dXXKPX*?arS)#g*{YLXta_`WD|i5(+(aSK1p{L=#p|u%CKRKZt_T zZP3xa1`Fib^k)UL%kQS^S*8`e9&GC_gUmg5ZC&!ai;He?8>dy++saM|0e;;s|G7Tj zZ85sB>WEOrr9^+kZtq%{4ZWY=>Kwh7CyUHGx_5z*z^B@xjT1!n| ziouS>%Peg@HHQ61`-fUaUD|Xjjp7tG`A&eY+@@JvvV^g&DnC%Y(;YF}fpjOHK8C2oN^SYrF0n`L~#fy9j6m*PNVB?62dAOnINTmHUk2@dMvY=aN(5#cm0ro^1EI z%YEZJ={E%4&++lnnk4u4yM|>DgfB~xjs2Or&TJgF?VFu4$lG|&I!{JUj1Edng}Sqm z(XM>mAGB@!69!_G*~9zpGCZ()rQ%dRa1(2NsfPW2t~JBr1NoDO9@G=YH>;noBj`uQ zKuE^v%m_2Pw&Q2$NPx`p>N!`3gYkxF zlVD4Aw}WzB>mhlvzwq44%r7Sa&;vw90>EAMsI?lI;}H;dXuHDOJzs{iMlB>?ATn97 z&TlxvBy?R*Lgc|Ze^-QK*F1apQB}7h2h1FtWcDH9y>*hV0Z03yJ9Y$1E8$!U!9nwv zYtYb7`zjD~_bJb>w+?T3g4>^w8S7pEd*(3^l5FFmmQ%z?W7H|}t3ak|-OR*qBUI&a z+}PyiJ2{3H1XFXGd;)&R5fT#Df#ke^EZAp*D>kN-W^DeHoW4&8#ts-Eq_lv{55C{G zq`7S>cojg>Lzj<&8$oqDg7)n z812x#!H&@%d~HuR98u57>WKxt+~u$BZwTLWgN;?YQRX@KAVKAm1s~Gn!UI*%1Jm%$@kk7 zNt%U|4VWmXbhUV7>E)ql7plG8iR|n1WWa<3@VZ{(_|z01`^X_Y!)N?a+n4FHv}y1B zeh(Z3nzCHyw3cnpgtXjnsCQ6fInff6%P z2PFe7V+rE5zik=HHtPo_EI+r~nG;&Zg)95s(WnAp5Xmik`|u!J4zpspl)8J{E%|{Q zZX`8{rnA$%&HviOF!B+0Qwz#`6#uwO-Ov3fW#C-T$NiCV2eK(DI2L3PoDGNp^01G! z4QT0avw?(#j0GGr15c3nAEAtJ=CQ+SF!}z1ydST(ScbYj&64PVggaKVhGp z$KUD1W#nZfu*8wgJ}VF;x7zJ!Tv!*|>hCh~vrdWzN7lCv=!??^_??bx-gYzGrCf1( z{(AV+Citk^F<547pCyedj4ENI-|LEmj_rRCY;8%F*Ym4QNN3_&1E;NU+fR7EaH3j6 zE5kOpqb-aw6#R@@5S4X?v-FlM(06B65G_^|zZGjNsaBg-+!y@_#K{kMwRef*0$5bU zRdkHqP^mg+mLF^0A+9Cf4rw-tcUfup>9d?KYY^VuKuu-WV{B$N?ZzFCqT3$scYxkeJ9ZM&S=I*Ox5{zLu*GWyv!rSe= z9c?W2TT{pk+V<3K4OH*1++2HPauy=a5SeK?SJsAx+$TPOvdN3Nh2`eq_k$?}y5u;3 z1rM0LTypgo>$RI*_v;#5bP8k51xCd4+7A_Rm`I<)G!dD3$x1^&)O4r+QjfI91==V* znem0Oh_B?ro4J>a+iOpmvBnJz)?gi_NfNS0l3%d{SGaTIABofM>8yKWP6MVlAT+Z3 z4A?PXOmi!0d#pis{32yS{S(-1V2{Dn&wodobo-kLtJ&Aw!$;g0)GlN9ru5pUbHaM{ zey=2vlA|9!UwnMyF~9qCwvf;XKq$|~#`i34y6kDd>z`A-Tgahra(X54-K9~BygEPm z3N!B!YhZf1{i@-(e{<~kHEL(pr)t1hH65g1aFJei8h3Z7c5|iUb7V$Q@usJ8uchN? zL&&&w!&xOBoe^E6yFvt>(ZMxIETq<&(tU|KyX;A4at2LHKz*get=(%Lx2UXW7uHgTWZ!Pc z)d+i<`^}8t^#g>K=2qJ8B#-{_1D4s^emrniD6Kq@>wq%A-Ebj?(OKOb6xRuVeN;G+ z2IaU25gF&Gl(33{Qu>+4%s`DQuMuS}jl~#W3bH1O7$$>(>8j=(68mP1-T<5`)wc#L zkzP?&nrjl5OJ2MV6Ti>7da@1B@fv>_yJXB}me-%r@s7m&K(w|XhzT6&$gB1IV~Q?!!5(w;8Ov&WmH3Mlrn5- z9s@SUxhWx+;wx&um>5Vopx?BuHlAQIB=ei)EH6HGhs6@kIfn9R^4%xQkP3B}sY$Re zTpwBiXu7hHTC5LBSQ|`h+&V$k3M6*w^ff|fbUgmo)ma}*?su`Q^< z4sxm4O_1;DZw44PJ~6m9Pk>Z_(!*fh!9HC(mkCKdX zwycVdj)LgS^}P3R&wQbqHz@G!&C+-0>JvhDW@lcL<$K~%)EZ?fM>4~h={-9R0VyL3 z!9W17W8Y-~FPJw8&?fUj88nzIJ<2H~OlELh5|{y69M0e5wz1b6$~!21xG7cLr8^B3 zwlZ#+@0G^UgQZEJuAai?&8Rpjwt%7cSHX9};|KNkYNE3TFDQR*VUk=vcfmVJR+480 z_i_+3WlWrKGPY~H*v z26>4ef$3ueI;bQRL1xLh0ARmhMFkMQK-{s`eQqY+q#>Cu$Kw&6uHQ6lWEQ$|`}HSK zC{jvmzmycShP7IC4~J+^1bqqgNX+#+F*0Nc-$w~bYRbr)?j$8ggxzwoyI_Suj2RZcX>T1i)lCHMF-{ek- zZp9t8J~_yj5Z)ur+*kjshhd9a<4)0%tTvey%l|6lz%Je*W$ZIAJOa zUb~ay#5>+Zys!H{i@ST5A>Q*wmjnOY!_8eAg)JLC+N6J`w{L|b+zG-z+I$kv4@vp> zn}PE%6Z6}Dx`?)G?w?iqx?%)5t9P+Isq;u=x6#l!@qkEd?` zt0qljE`1WnRDvOwr7*oKpDi=Ny%`=cmwho0J4-D{5#g?R(6G3yZiBTDJzr%7MPKVt zF&~D0jxrM0y5eK&o*BI~W#tzcQB|S9MLjIX;H8eCqM|1&m2S;Nh3AhVhn|hVT?g5= zjNJ7`rcLWso=4aU@0aV|UswHyi_^2%M(b@8VR2(ez__a@ zog8OTd12kcf1)AQynC9iDZu7?_fR?8k8#`hCUQ17-yq+%5rc7+uNCD5=$#A%6pVXC zz!ca30xvr}3>BnSSUu)9-JLFO>&4I{lM84_MU`b5g+blh;^qV zsYT-`2gOJw{ypm>1#7z0fQ6zP_hyy6R%-j^ZKz)+vp{jOUD;?5o^^h2jyU$-(ZmG3 zF}V{{Y2lcf_Aul5taY4aQ3z*vB0kj&^W^W>v(HaePCvH|)mnEG-!}EKRfXbIY*zac zkglzwGNHmXuPuGPU*+6f4>4$W!s>7Eq3)j9x(2o4(LS28WDPNpYBaW9+Gy|8b$6xh zRI^gmf@hf5i~-{@N3gL07dNaf3`4oqYa~)qMv@$JcXB()!pp{6MKQP~5t#4anVDJH z>E8*Qvo%ka*#=6MxJZC0AZyfL+bmz=b#f|!`&E*?!p)Ov#J%cA4?N{pzEXh==R6EP zJPx8*F>7|w2$v=;djF~-&6Y62nGzYUTAKXB<#;70;Lb)Rl@~_0spubVSp-C#W~ThM zIsiQOi!`RM=gk)$Y!Pu z*PqQd8HlH;lg=zWv=*far$QR8ld|dm0ObMoCAcIX)7@l#PYJTe| z441@+4s=3WVnV>}d25FFL?XFsgsDy`1Kq<)m>WDZN(EZ0KxzVTx5-v7dMO^KbzX6_ zNbr4?S#m|O$Qu=NfrUl+q!h`mmTm<7CoRu-l1SDjEYCU*SQ8i}X4D_>U$Ou7;Dqz4 z>8N%7wQ>vfMT9+~J((OIo=bcY%EvPO)S8Z%VisEahW}CXmJL^V3)2#ulByc+YK+b z?rHjS+@(TsdvJQ~X@Z9ysO-0+^l?AKtLEfou1AZlf_1YwdH2f#yS;m1*L1-1P}lOC zx>Tp#6RHQr^}Xf6^q5-Se@93h`(HoOm-6opJ2|CIa$T7@t*7+5=C^;9!Oy(~+Uyxg zC*^ApE0k|j^ff)DR?J2By7+37eJhx{T94^Pc6SnI9wxf-{n1m5MIW@z*Ssg2NldF; z4!VzZ96tcKIZ-LYgNjn~TI;2KgVBpppR_Bt|HN?;Er-11=j+RVu4412J2BSjA*IFN zw42rzFfpUNQ1Z{d;fItaF8grx_%74UhN!vs7Z&pC-OXclwVZ}){o$imb`Nq}xqsU3 zV+YZ0crwYZ@OEj?{e*rqMOA}wSF^-sQ^}C8n&=w&xFg{&i((I zQ1xFEK->*j`D^c2A6LyBSCuJ#Xl zpuH*Te{?CJci$7xKyEYT-5MN~L_Nq3ICWEuZ!le(0c^?9%#iM}Rywe!o|LDJmn|JD1|D8waIKb{TASJu>DXr(=$9~;YI&||7Lp<7offc@Gb4>rp!K0_7nlo(2YhN(c9AjetvFwo*(~b@RO5| z^%nrXom;!MaWwyJ`QlGYu?n*>`C8Q2#bSDCFM6c$Z-74=ZcBUZX_Z^--~B#5?fyG) z$-aX>Y8pTGlb>#Y)&aNo?7PVqdRm*(UG3f7+&K4S`c=PPcb+nd^w!V1Tiey$PT#Lo zFE9U}A9D`?EZhMAVx0fJb3Zk?w5dlGZ06tKH386rUt79NTf<)qAGb}X8fu`nqK@gy z8*fGIhbNMj;$Pz*Kj#3ucU|)92`{}y5B}Oa4cCCr@m`WU>5Y}wME~J)fW5~~uZ^Yl zBmZ@tk?BOsKA>1vrOIZV{i(Mp@pb>!KkT))ukHart7DJe+IkDx`mYieVV8S%m%snL z{+mZ`1G&%EtDOKkwerZ?oc$`($2=D&w>afOE3ZzE10U?=qwX6Re&All+2Cz3`S--MTNNJh3F=z1;eq!2W7 zMCII$hxqRChvw;NFUW&mKnHL&r$ifSKl%ESysT6p6P>}Lh#hvbEOnz zNw9#JL&Ov7UIqn0l@*8j>!SA1vg)B;$%sfks1B&p+Eri`ePli6Q^tcNq4MImg@let zaV-?Y$93Hy-&nm%6y{{d#3{vgP?@L9%~KCTy54FOdOhRdd&d@KZY(NK&2B@&+rKD7 z%t%}6yaX1OFApkp!r{Yh?d9ussGENterrl0%SysmGN^nrgJxi5B>ApH8oR1YNef%* z868T*B=3px4;8ZPqM}+3Lxbf9qlRH7%FUwmZ^iS`S6$Jc$|xS9Wu+QUOIcy@^s}~j zy`oelIj59I0uxT`Avt*D-UUm|TDD#2SQSV=PxN$1X)$snlVTp-;vpU2*0guVJ%%kF5bYe zcF{!e%JOHNvXQRY-UKploN-c?!QnLHc2W(gPS(INC-u~k!Bop`pkmjTuFqtb8BPTu z;A0H!`2)Uf?g~0wG2wr%^c~(^kCC1s31L$?*cA}9-cfqXHY5C(I~NNEB0{OVt819@ zT~&idWmU;du5 zGmZ)ZQ1#dii`N&2z^%^XbvOnRIv6a!!xk_Lu;A&IYEmA?Ikwsx*K;Dq_#_t;6)=B= z0g}_fF&(T_Fm?25@QUo}>X{A>5tl^NqIxyAlNWeQ^Bp`DDRD+mFk;beBLEF+Of65W z;bqOD%tRX?wczUYVbtP#ddA4;cE>y!PENm70=y1ui$L0X!EY*wQAlJfLx0*PFk(;b z9QiMZ_Mv$`EyY+vLp)I+N>=#LOJJl4uao^7OUCr z@@hC$H-fc#bE33j`!eU&ohHE0Q~UW>O!G3AB61L^848mW8nlm(s~(ZZfNRJI;Yac* z-eu@|pY}_<%Zi)i8J_T87<9!j2PcNo`ZMkF!G&kN7x_N4v2FRkr(qviwc8$3{C{gg-w z5HjRqv4z27#Ev~CjP|g3#{|`GB_IOy{Am3s!_|OE{L&D1rRSCKRih*8J+knHsLuZy zEBxsZzK>VxU){YpIQu~gWEA1$uQ#|ELljQ{oH7Lbp0vM$iq1PM5G7=_eCRI_<%EnI z;yR&xBGsG7t<|+YqWbzue13Z`i*L4Cq@1e-fIS_ZtF8=)@;EVMt;aW77-GC82(XpK|8G#;*2>}=iY&~FhJI}y&hrjc>`B@XwvL;s_<*4$ghuqY}=!Rc?X6AVNvcfM>Q2$kZS**^;5OdN*@DW0ue3_|6yU>t(!uxd@7ib4bw z_F3%SwIwV&t4faB)!y=6I!xj}b2yeINmOq5M#F~%TgyT+=hBO~qPncvcsTMDtYpkx z##)Po_2L;N2-i%%tsD1A#jHrRWmh|lKU-p9;K?PYjdZEwOW1kEkjvXIfEh)3;s95Mj99=AlMVD(ud-@kMGGu% z+I(2B5Eq)EYEza)a&T|hXtPA}`v&k{GO-|DvSN>v$+Vhho^^3gu7g!zMW- zdp3$uyw|D*7r|dS6O8IsU#77$TOwTJe70h8u^3gH86Ii_A4SOQ&YA;CjEBZ!ErB%2y0Jr}&L7L*#35A{nf;kO${${> z*}rc}=^8i)&(&qNABu4!sE{R0PcC;WwAJ6%T`W)6v9`cW;irVbS6$_C8&4j_Rm54w zlG+vB{^j!=3+zA8l+~IL&!;X@G7*C$0{Z9COm$v^wG*zrf5v*1fg#uZm-T%KN0XM_ zzS;adS`%d4Y)6B~_^KwSjG|>kW0?yz@C1B(tJNcfmGi+)0f(brA8Ku&hZAjnOG(>L zRzGO2Tf=&bN7UDq$A~c`f1~d@PDp;brZzCgpBm+#SW2kg-YrrDS?m*>g$R%0-R}=;r2?&=+=@5tiU`@ zck9YB0Oz2|#M-5%j^xedsIl@0zk9Ul5H(>OsppGC?Ns$gKSV|yVUOw+sm8i^F=3ur z94F+weHpAYe8Uagz{RInoc6Do@-(nf23MZgOf0h-@HhI5u@&okPm7mlWcrXa?_f%T z81JnieZeon_>z-92}ayObS<-}1x+~hO~a)8c|9R`74-Pw{>vDNd6Lzuj$21a(MU3| zphB{E&5UWhI307x=wLo#OWkgA(3VV_CbQ3Y}pfSlEYpBi)BnvN+VEcZN{* zwD8=foF4ylBG#=V>!veKJ5zFNQvluH^!f6IGc+rgvsQK%U!AQBaQL1%@j#X~Z*$vS z>#xxEhjm|?OC8B8%s21sHaOY_idS%tU!Th>DlAI|v3+WBRFFeSB>&xV)0cigg{}xW z@!|OTSJRc7U8v7p@LyJDR)G+`-x#{Nv2 z8IhSTNKw>NVL)(#PJ?!$Q!|g-=%lZT^wuCxk^a~7$^&Mb_5$2O$!4P_K7F*I@VNuJ zCfYUA$70G)(sjBezkpVY%$LQYPh&C)vVI%nfHRTNt|~QKY29W_<>%coo=<3QmNGj6 zKB&x8cE4(69;twRGMH6HoVengnZ=u*T5u&AMGZDaHy zG8tCY`e}E_n_Fg=@{x{VuJ-zumDKz&6e-2Yu%@~qH{Iph{Pzxx>=sUWrEuCN3_!W6E~>hl#xZGpzG zX||x)YwP8U`7$WqQa3MaDZrVs=W!2#pnYH) zkdFSK!+^lQ3DQd%a@((7M2}I!kf`q6)^L9o6=+RQwGYoV4)tyWJH>-mf@UI=G4z*) zAF&?XDDUb~!GgtL*ib2}WPfS7U8yWJyBO31`_)VnADzBH)PB51XLZY$+8801V*zF*r!Ze=gPZJuPL3fQP>AwZvWgtm|P6p)ic{YSH)t8eN zl5yV=p^=diDkfDU%bYUZxlTp0zE$FUzZJEyN#07bSC&xILTSTPl2hj6cj#Nf10zM` zt{kknA>@nrg@R0~5@A-#9i|Mgi@*SWH@xUI*u_Eg*}(-!%#OGip%nh^b#JqAYqK1J z+hlmj>C0_9Y4N62Oz`$XKHn=mSm@8!%lN;~h`)11$NZCw%Es1WR67w-`^nFTwif!* zUy{mvBR1)2-l<3FE%C`X8D9zku?ALbxnZHXQ4HCanG*@as%&%z+a!u?Z4b^oYjiDw$C4w zD({n~l6icQ5KIBZPaK0&Y*&rF%*H}P(_sC3V5KGoH|!%V=Qz!FWcBwc4>C@~$fzO= zry`I#1JTIt6wl1ij{|1Op3EYdAGZv4D(Tg5+~UIBp*@lDNJ=DAGZ>y1ArSVel`$vt zfNB61LtidCLE3;khwMN)6Znl0z_F-S!9TcEZi@wU_8p>YVIeK|4L;aVo-`okE<4)N zYmk^x7XOa|uceS~l*BM5JtAbjI`Jz!VK>>e8kUq3(I%2Mh(P2y&OOl~n(QJ9!cc-z zH<@oVoC2)B(Zz&6jHP1Kzx6S0aO3M6-Y2c0nDmb)uFS9DAK)JhTu95W(vq4t)Ur^x zg;tET-91nI)}lS|-LGwmDY|fExRO}01I%RTPfkq&843j%W|*PReYXx5jO<*VTAHR2 zzimZ)YPTKUpU(xIucTiz=8t7KN1uy`!^6dzHGP@Rx3zP>$DPH2bY&?qBS&eq` zy$d9;49p(Y=Xn*3B)>;%E6ZUidky%r0z6bj!biRy6O6uhk7lLb0Li@r{N$G>-|Muh z{=dzO^dr7=KFoNX@Ef&QVRgYr@H)>t!+d(<(YirW; zQMdGOiVjn0=`PNmAszfjy|uD?X>JBwgxWR2rtT$;da^2@b>;{~vmYrhL;Zvq7s3tk z-gn@YK{t}a*=UA{%h2y3^-^U1?Q?-@hA|9q>^Ei0gnP~phUQtx@d)R6_tLpl;YpR0 z6bS5vDCGp?gn4($^&jlr0$3UzSiE3%gaaEPYlTe`vVE@dv(7`XF_ouh>L>h}|o+NRd6kCgUDb6~v2!qLo)u z4j@4RUyBbz>W&;l=hGyWCLoJ?S*7+L5ZAne>O(?kq1s9Lu`E^L7Zbr|!Xr2IVZBv5nc_y`^qvNF4fpD8m3 zuw?dth@-y~m#&n|H_zaS6R*48r14I*^SGY-F^xA6*^ez!8buDx-ra(%-j#M0)qTvkNPjteo;z0w1f}U9rq4H5)XtwO?#z2 z`NLz#0`a{bk7MGj@jmT*?+#>mR8#?5Up|R|@FM}o(Zu+t+wj`i*sr_DcYK{6ha=Q= zgm=v2N`}fmCSVd|fp9-Q;ytANDjsnH0bvr8GF}t@js)6nfV66hF<^WF0vDwa>QN=5 z9!thu7_L2SLlmbrYhV_q5z)9pp2`@4vMwfl?i{*M{9gb=$5X zov_D6PP{o!Y|P4ns8#K7?q1Qk;Guee2jii5QO3lRVCu=z>yoH!Lak`k_A*1M-%g^? zi)^9`;45ZT=*y;TJgXI=cUmkKDidV6O7JX5-jsTxALnpcBIKg9`p28%>?OgDXfcsy z4=_tK-?%ztT6Hs`QQnH8kswgC<;-W--1tA_cYcd4h50ZXiKu^3f9KiDY{w-6hHy2q zlaoU!PxBNWQhyB!EvtC7a44*gQKqJHy!5wqdq4IN0gkV?qhn1ZS2Y#U7_(C+F?|c? z3{6~^R@30x3ey-z#td(myCp*34KN>&E$~5gb>_&HS}XO$EtMmOsdMZO;HlC2*!y~~ ztByesW{DF{jw#WTv5&op`%CkAl3kv(a5|tV!Au6Wb&q+RL?i&0UcfV$a??{;S`m+N zgtMct>a}_i`IR2VLt{L<|6%~y9{0{nbTqiUR28Q-n(%c6d`4YE+c3`L@}z1=ULMJO zx$G>aJia=jUc==Cne*B6*moo4G4sW-W|uJEHviizT|%pi=?-jRx7v{_E_R=?01vd! zYi)I&Sh+z~0Z~uKq%q(8Fz+;j*{{vf_rFm}{8{WOUT?XC|ElEZ*`CR@)3x~x5 z*#WJ6sQF+62H_s(bu3cvBcUsph7BZjqoUv6_T~{$k!p+E-1V-4>)YfZ$ICn{=5AKK zPx;No0~ME7_?!MoetEvR#=1FXbhkatC;Mq{+iw!vdX)%L<^-=%7ZD{A>0G|vWHMG< zjfWwHl(9UVtTlRklvEZ+KWdobp-b-foFTs|b|mE<(I(pHSPWBtol03QXF?| z7%Lf~O0`RM(4pg*@$HusLl*|ta44PRZ2rBTvR<6ck(Dgg}zB<5|>*nwS;86#U!eR7blct}o3dQJ4`uA|=c9i*GTDCSx{F*+M2npU647-JisMSZwn3IBD`Xf3mmhb)8I~bO|^tG3fP@ z72%c80q!pXWr6#VivdG4fR!OMb)v8X1L}fwDt13&Qo?(`XNe@0`UPo`J=-?%$(l7S zq2R`0SwZ-L#y!WvN_TtR?>MRTtVDk8Ce6JjFt^08K2Or>((V!#%b3+%aj})Xfm{JE z*N^s-r)VexbpX=y<8c$t4AMEo(~AwJn>`E4OD_NR!F%bOdl%?N@M7t#tiYFw!})10 zBl;KF*TdoE-_lkbbf>5W`f077JEusvIX|c`o`Lru92OmtL5^e{$nN(p_jIYsTtp`u6J z(JF1Aaxv21=WrcVE?_!EJWP-EE;ko=O^!1$&S&N2^vs9peJ|bV$A?p%bI1hUB$2H2 z`XIA=m}AU(Yz#d}qif)l7IE%-y8^y5xLBQaAJpZ)|33g^K%2k9EbbsR#T}-Sj^Qy^=iT1!u`T3qUQBW@kXJG@Pd2-KS)eX?K*V&xY*Xg-ZJeS zIZnNo&`x*t$P>{PvemrNp5pf+QWl%I*X%k&Cf!5z_||W~-@@N;?&nyw$@1a^jiqq&9{Ka8vH-2(h_kvzoT#iitKP&@7;Q6bo7P*s$&HH z2%-~eHdbR7YX~DGKhmE zF4!G4UOa{duj;Wjz3279X>6WkMA1WGG^txP(R^yo*{;gSSR0_K?`s3>f_HcGjZU#K zyj!=~X=!uPq^`s-ybmt;1+IdB)|K+nlMoOk+c98+IQhdzN#V$y-fSlQC8QT_SOyu(A#6EY z6D)dGq~%`l{an=OLynVr%YGMH%l8-W$#;0urT{PkubK(fAY=w!MP4?N64410yVr6y z)(GcG+o89nyV9i=RzK|0Lbe0h-3M5=RUNU#?;vFfhIZ}Y?BYv*qW(hDQ3c&U-JcM< zef*PtgO`rFFni*%CLZmFC zcxz2?HYGTX3@34cjDG$>F;TAON{rLR(hZ45oy;GmIOb;ekCzFRtIwxpmiZnbT+dmtB35sIk{N znD2Ya$ zUy2{JIriZRJ!CA*cZb2tZn&>IIoEU868wA+u8jIo_@?VZ_dN_l8$OhvOJTC)ihdPV zt7a3M;7?`AbTf_)gWOdjRTwYo29x?E&ShK_&oE!`9FT=?wQ}u#eZnC9@gRH&|1;;B z$H4vv_Gr)A4(#N-XFN>Ey5`A;5F}sCg7^lL`M(>~-;HiUqbJX#L9w_q(N>CkFzM%_ z36HjHjaq3JZUJD;pHWd;$~3>tyU${LxNW783yIMPf&q)Jd#pJ&+oOLLem*VF2T$03 z+du2L7pz)*lW@2X+fg;0WMe+W3&g*`B&Ph+mT6EqWR_rlDX@mT=`AXulmN74~!a@;RscFd7LTxx-i^ zg})Ov9ee#*yUq}_S*pDuF;S%|L}^8D=MS7%=0Vi*_Ne2l{9psjL`Tq0?5l;zi|+W!wJ*e9gNYj_^r-&{KKS7t znOC5`klK^Tnbc%}#Xv>|6#roY=R@(*wO2j199ve2*hTg16Z2eCKZZ&JPAog=iKosx zwtF|xEYr1JyZA8qyKv*~-DddACOf|Y->3jxePS*JsvUJ=?I|lbg&So(#Xc${;opbZ z0lD&v;lwG>h{o|MbT!!-AI-}5Zh)Up+2)q|RZE`_BX1sSXsH6ATz zoPtO~G=FaIUceVA z&Dck+6Pr`{u=*@RXMzYTI-~eKQH=9$jPA`RO6pC2|BL#JA(waWF0D7A&+${!0BMH2 zH)I0A<;QG*j-4@yRR_ve09f-^xhwV{NUfu)VX$}+)K>BzI}KZhpMFqj_-?S{T|Fmt z#=Dz(EX)Qz`-@8W=86w(JA9Q`2}}65>!H-OXm|aD2ekg?%P@Y(Py~Chdgm^9y&HC8 z)h_b&_3qtawQ(pEoY_tMjq1eT*o!aGI_ypKvoWbd;u{lUc%7&wR*9E2GJvS3Q77_4 z`hC?V7I&$9dcwI@u%$tVQ;nlwgZIS=1+8)FFljex3o|DC!Vi=FnFWVYJ81&mo^iso z9(hkz+JCCteoFQWx+quy6Bga@SaV^vM>o zm_Sv@}2%Q>u zHEB5iGU#(0d2=87LQ2I?!XO0>fmcIRRl3EQ{YVuVeb5$ckjbS&dDGuPuSR)wUxM$Y zr`~Qfhxj|Avo5&7fE8EV)|{H_H6jcD{2{CTKP3qs2zMh1!Szd zuT~SFqQ_-?wSfjdHS1U1V|l^vL{-;*S@>?+Pana4DfijWKHoit4Ql-D{xfGjK3f?= zf4E!?8Np`PUg@JzfEVI!2-+MQ5BeX53c-8#0W}!}XF9>zgW#n58wJuvd0(nRNJIv7 zUW!j&er!Gx4ed{K^OtJI!Bgx5s3Biu3V4ZrHeJI-mGOK6qX~hLF3e^9fSbEN=>vSj zA&QK2edD4KNm2U;sdPq{fWRPV>pvED64bxrA2q6PZB!ef$C8b%(w{f?)W$^zFZ!KA zpkEV;rf>iDE?n*XOWPrBmP;e?v0Vvs$L~3YSHL&NFaBfhd(|AFoAtfa(s@BiM@eo4 zs*F<}c*Xks&}Qy~rsI2kzg%?O4SXM6_Uz)(ZvZsxc6|44h=hMh72FiMk@}Ek(6%7k z4%WB3o2@n&LFZziLoYS4;BKVSiNPK)5uZ&%=r3Gje>E7s>!&4Nk&v7AJMfii z#*2ZK&Op3ZD>rE(Tt>5I&ic(CBJo#*Y8(9b&Vwj&^{J=VH;<{EU}AEaNa!9Sx7`4p z+$qcO-DJD>aOmAu2xqOi6guzN0{7Ydq1vdH*J{s@R-=Hy%zT=z?nJwJ1B#I@neEF} zB4-NE7)On{%G$~ZjgQ(~A9AtznZ)BBS*K>{7f*qa!@g|Ny|Hu*xkgdrlDl{n-$3pQ z#~1yoI;@&QDlVY7or*-$)uinh*yu=$3)PC;T0AHTZmT;v89^2sqZ{GdrDDOUa zec!6mL431XGjDVn!9wT+`LOK-f^HC1jlUIg6i4jaw;vtNw{?}8Q!ydWlQp3&Aatxn zy{@nV9}2?v2rYE3<1kOxaosupL_5#Mwl2=Ri)&*KHtYGk2A62V9du9~bXnk`p(_g! zKxYTs0!gWl6_iLa|CrwOHtAFrNAQq)ea*}gj~WjhCEi%XmrglZnW zdail?>Uo4N+9j4Kx8UaDsz)kHKp+Y*6o=pmFa!p%Eu+L49yR$o1a8^{f!8NbzK(Bi z+JtXkpDcDR%=DVq^5)pFgT77kDO?~-u4H*aKYa{7SH_ROf**Xm4nLs3z^7UMl6L74 zJsvgx_rlV)|2k|xhxFD`sqH86;Y!82bA7fRGk0;^Ds3$xHn|ac@)C^B} z9!Xepsie>LGw$?q&vrHhF!q8edyyKFk>n_o#W*+4U0W5jv79cD3!=YNT$$|MsRZ_) zqs=(*bFi;e3IF-IlnS>$$A6a1+6DZ?fCQ<~0F~gw3sA`*nUG+>PnfPIa-0|=-r(#w zN3K_*BhNWxL#E1>7dcxe&E3=2PuJkW6J9;9Su-Nh)lti-IF(j(6dkm@4R52hwXrbNI-qyiUw6k^KRBBFT!wbBPqv%Zj>+DB2s4Ek=abOrDWaD6jUg9x$^h<=s zL3^o_7?QJ^Sd=EnU3!KNeF9%GIvWx?<4e-17Bdm2=0yvgk0Sr~=nP;RaM;9}8VsUS z;UFlG@JpBv^Il3g18+y$RMIuk(2Ahi)iN7>3QS0Cg*^ZfZ zYChXm>#VkO&}i-^Tu&&Vs|_`4DuU&-&b%{d9RvqKs|Gc%wd3r{CK!R*j#Gi!nHPCy z!NJ}^u;XNc*$xzlvuqsVZ%LgX1?Qq|cGO!-Z@y1b32xVcQDnWX=YZjOyiV zV05n_Uvy1|?#Hm_jEP!a&DjV`?7^F}^|lec1qaPt6ZuD)ZTPE%go4Njc2J&uv_{^$ zpgk#@!S)0(P_z14VGgp&6(|PLo>^Yb{Pbbff=`)a?kH~NZ zv0wK{8>IHj$c1xJT+>8NOye57my2sygss8FIjC{8#zdOb>Fe~1niaRGgAozc9Avw; zB--a-HIIY-3!<5QV_&qH5=$p9UNU><&TL#1vv+(s>2%vSI=t%O!BzCb?BBn#Ei5BV zisLt!(uGkqqod>FqoZqXUNn8$qD9lDFEZu5k;JFU@p0~OoN5xO107c@(NVN@;Jww3 z$eYu+=rwl>BA-XzeI8jrZHq?jlFd10qn(_vL~E06?@VpZqeyBziD6+ovy`=bWqSDz zvWNM|9v_GL(w}&=^e5EE$LSIP>YY#5Q(=>)YxaEOf_eR z1QloRjffHu6L$Tywx(zA*Z8Lvy_{^(%dkY9eYVYR z(wMlNLbe(>ThWGUCeg>c1-bPc>j6rmEz9(rSY(Ta(v1jcD#qB2d@$eU5^i=$ym6^4 zemPa9eYR+?5=cAqR+ZrQ`KtuNFVd=c8;rY%ec;V3;P5bT)dW|9tgaR$-zG z4wVeq&R)L79cZMcyxv6){iao^oq+T)adm;M-vpM~!`!Hz_HCWS&of)5q8$27AIt1r z)=e7msE3z>u-`DJ-F^73u!Ui6+xwFy4u9OkOW`M5^_i+3850@F_<3lek6U$DcdnA1 zjiYzvpg^@=RmtBrT;uQQxTF$cuDZx|8s@X182;VLXs>_Z;_-UHor6wy&f11U>_6nFK!S)kSVbG8SPDqRnqAN*tkt~LX zr#DRdc<59nh)1V4WUd`L<;D{9)8fy@-dvk1%v&P4X0e}&EXJH3aB3j_UKYpLGlNbJ z1jD)~yZDve(m%aF@$qg`Kl+27eIa@b%Po5B%vDcxS7!@Ek4gJ=$mVuCJKBoiU?Xs} zf1vi2El59lewQ$Imv}@(gR3-6#Ku{isS1-DhilwGwUByFs*7gJ`3< zd-pW$ZW10vBKJ5j7Zwkpmj>3-cD<4W9y)GbaGT_)i!F-5?G>I z^W5@(qO%RyI;ia(NOwvyadxB+O|%oWHa2Rcb>f`VoaPt$>8y*Qp~`3@W@4Fk8+7?# z|1I`K+_yLtr`$$v;tkvz*5XmHP>M4BgCqpSx*2^1(=`L>jYxahE!Ysx4|s24gu@FWO$BV@2KBxpbV|2JyS!n1 zAif6GO}8NoUlniAZcgsvD9oY<>KeqxhI65bZq9~mz4sE^pzKg#K|~FoYW|)ME~*F( zsgdV*BMAc<;#JC(LD#knenBy0yw7%p_^D%JqkQQKaa^n+(%m)CyjvvBRb})I3gj;b zM4!Strj8skj?*rwJ8Ja;F+MtC9f%6jCZv)7$c;71 z;z^i;{V|V%?bltB4@>jG75_{>`FLnP{vQ13hoqAxkpXjXMh;$-gU7*a`pJQjIpi5e zn(JANV)eX()ky)V_c_dVc_%sv*|1y8=2S@ZCVEBsgwv67uO4A0sDM8rIicU>idEpj zGUi8yn)QasMn_tM0~sXPg13v4gND;k&aV2XOls|Zu{^@cM0>FyR5oP zFfTKXj_0F>(oy=!r%@N_hw^IXlk%wS1tdgdD{Y@rzzMsN2;KtYCuxs{M*8GvAk)a_ zjJJY<2uO5{uuZgWZJTbp*mk|GDlLwN#v%>oLO}t_&!_FZa0}&aebGa4GlA{R)lKwp zb{1n`-Q($qL}Kr4Y;DXV3o;msc8QZ0 z)}6pS=nsmbE64_4|MkZXBaLaZutUoD;>?{34{lsMejgvk2k}?Qik}{#_~{YF ze)@a6=xB~*lET_Oe=|*})Vf)-*7URa)0H1>+49lKPbIA-i9XU~d5@Ihj|FkTiS~5V zFZ*G^va3RSI?rrpWAPAQQ}+BtoZbgfKO-i(I--t8*=|?r+M8pke_{Sxj?Z=f({$oj zOqwYFmG^QjVRX6?{coM<;p}8r#n<5Ds8P8aovLe$glKm{bXZCMijI|>U3{w;d^C=# zU~gydY?ol>QH9BjoRIUC$5DpWI7DYD&}n+ z_*@=8{xW{BZXLci;M}16vEwfj_9i~qoZbzN4aCiMJ*L0YH$ULY@Hsmi{_8 zQExrgaI^)HG+sK`NFe_g6c00WO6N>J7i6!@dW<1bKY;DeGy4HLu3n;-4ziJEw=+Sp z(?OLjI`e9zvbAy4I%xFDc!qu-sHd*S*R$mnr+^}4w#mpgC`MV2aK!%1H}Eizb3~g< zuR|`O8D>iO61p5hYzI*XyQ;y#dY=+Q3vJEt0?qS%;Z-4x8px2Zf_GXJym*QZDx%{e zA**6~4rej0kgmI4lI`oLqDN$0QP-^RL~;TC#y~r@%H3d7U1K2QiE{MaMzm8K1N{St zzT1@6_tPcyy~Mbo1bg(nS75Qelaa#obwj6=!Cw|$J`IMO#|%v0>6l>3B4W!-)Ct7gtvMU}0PjO3BWsu?p^>3zH7A$TVq z&#wyg_70_=Eb|Za4En+PQ9-S0XD(Ti*)$d(!w<;6W3f%?bM00^qhS5`gc>yxYDY%$ zv)PaEaJoK0+Rh2q=8cJ3(S{BvIMOCX$EQk@Xiukr5F5|fS`k%f z14(A{yo$t0J0U(5u>*-!+`aW4**=x(WCu6Pwy)ICJ~&P^YK+-6Xa&?*kX*6?Xge-A z{bn`zsa3A@%mf|b8MQ{bgVItbG&DlRE9J#UQw|qAdsc9G%11Bcim6|FCjPa8HM42n z4@5{gMO@Jj^ER2Qr%^wiPV{!N&lXTNm#N9N5q7$WPTBT0wxD$;zPg~N zqPu?jw5+SdVJGcU^CB{0Ullz-n(Vn-m}g$s1%8iI3A6=2{ZxQ|MgN%U5@!!LQAm>> z=5QtF6Zxto`Uo{wB~hb7nL;*aD^NGm8<;1_);!o;PE{qAwOG4w5$zPj8)SqNqQDTw zu{ohSi4F}&2Owk;9Tx;!VtlXD`A?#0#D_|BvC$#~YAw$r@{7#|(Lp8~VA^P&cQzQ= zOsoN5?~m{UHV}s5;RkdA4a&)pR?B0NQ7k4lJ^#`w(Jerua`sd^A%Bg*!_(JOXNSD? zl_8ut80#?k#R_5kGp4idiMA>vurM1o z8sY&^FQeczAx?H*qWEW~7K>5#Vj&E+Qo}3zEsKjD@;k(9ECwarLC6k<$Yf=zp@FHLjia&Q zk(%+R)+f*H*fBiD(={O)obc;ouroBKTaC_fRpj=^;!g6BR`DoxxD(-N4_^zVsPy!l zoQ~caV%!5;U*@Uwi>1#Q&*#YdVe)(8%n*|e2Y!XE2gR9-r9k?A5B?pcKmj{v7scjJ z`@h5~c~cgn+j4pGewh3o=nW@PXc$iU^&tLzF-oFzEhB>2BfiwA#1@Rs9DGDIjo67G z_X!+liY0#Wgi`6#l=Nw((kCnFQ%j{!RnjxdfnPFzAWhe( zCzd0hDdos#ayfKnmdTeny?i+3=|gF`WtJ&tbNb{`atNe+k@P8V-|l6PAP}ZN#*G0)H3NWZWohF>3L>3aHhOf&TrPsgg4}4 zoxij`nE5T8znIR6Wwzh);J+!iN#*Fn)@xUf&=v=y+tl_>z>VW`Q}7!C+^hif#}XW7u8@ zdLC3>_}4}WWAde**n}RNo`4;?l#j+rb5R~&S*n4)mTBXNpU{fJaYyW#;t67S0!uza zQ}#^P6sj=1bu2P7vgfKLpY2bZpH*`H2-wz33NO`o#6>WN914oJN=lr@_Cy!*%wVN{0pe`Q>cu)5yz>wFxa&?t8u9d z8eK(^Olh3T&AO1ws%r%khRqEgQzPNOPqXW%fSDHk9_j+$DcqWd}H~N zCClMY$@KK~)QQ=jf~F98@D9j0d;Wr%(rP$0Y~+aHTTbkqyGieRapn2jrDQ|BO6zCs zL+iB~7q)kU$U@n>LC>}^-Bu>eg~q1V=n0){lWh1?IdCWkRkoh9cVTn(ivHbV`Vh&U z_mStS?0r0gzmMRrN@T6&swLXmdE3Nmy}9}>#iI;*an^Ga86JJ^m@O=^mA5EF(a8;8 z&J!#rr}vTO;suq!aB4=`PUqaR^d=cM=DiHH3ANRnm zaer6=`^0ek3}44r@sDEo>kt?S(_kvFJM*~R2_^kRaXR6T!4!=0 ztyv0Gt&EsKR?t)Ef{~Iz$}k#985YAu-gjcARLQPnmGcTBx+&+StBh?ZHJaM!njCoW$DozZ z9}wPF7ClsN8XNn@es6H*zD-@(Wt(8Tz~Ja-#hHs% zL;65J!RV{i=%SFTM&5xbGZU$e=GE@=@W}S~#!Gy?Egm`V?9$71n`OB6HuctzYgX^_ zQvM8nh=0bdA3T7)pohx%;A>nM-_;>5&Y^2OsQ-ZvWLrZloO&ef&-r7tKj%WlA6R-_ z(x=QLbsETj&(i-8waWbOL-l3xC1*=_t8=WC(Jyz}qtfjKoYL}qIRS7}+F?T;@K+%s zKObLq!YlC^d=}4v45&pql>TBe&cl!K6PyQ4iDmFQgI2r_LD~36+!sED9?%m$#r-(> z9P~r6P?$hk2|edxo`BN?LKH)6RB=W>MvMy@xopRdW!c+zK>r(gd6#YRzrVf2FUY9> z-oN}0&(59y@hL2Qici7u!VSpwAAA*Rf{sWi9zUXZNbjOPPV9{{i(gL4?Z-~B zD6uuDmMS1)qYU!Aq8whs&B9t8Pzf}m#*T~O_@BHyxH>Q!&}T|WjXz%EB|q%Q9JcD9 z5=P_Xrcte>zlC&M-_K>rd=^NMOaqER4J$|;;egG1os@UxJ49XsOB z8-=j@IPhcDQz4ze_hj&6Y4Ge)@SVZ1r)zLev90vUvSkOQuw{H-JZVg2vz!E&Ccae=(hq<3`AZtwTl#f>ia4h-VZBjG!dAm>iW@5x^ZHdbNYl;8YC5D1$fz zj!+ls@%^Pw4&sY>IRBuKF1er=l!QG}5V~b*UED`&g1B+;fc76sU#*;}*93BHSvwsE z)r)3u0$X$HL)s~|77Nz?HAR!b`3UPyY`!ueEI9IFQZ)Y zjnCss_#XJe6Y%Am&^4|#SFfVe*REc@CM8@IJ}TLC2~I+b*ie|D#A)>@#>q2pQQq2a zHV@<*ju52%uU%{Y<-_}DPCa~hir{L7zrgqK4-_iOCpeMrDIWUt$Mff&ttIq4$G@=i z{j9;7eHXidL@t3kZ+iaKDk;4PCeAEYse8?MNSkVk7KO!NGN=Nq!IdipeC)HQt zZ&quB?pzfzh6pF)hI-rw^sZNK294Jua{{IQa&icRXcy(Le>u-wsb?Kq@d*L?O)4aa zbXdM@F+!d?tPS*A+2cZE{-`NJq4}&?(yy~-A+7uu|1)cr;5TcQX+rLR0lED*uy5GL z{%mC5(k%7|XIa1cVBz-d3x(+I_+bY(XJ^+A_`$X)1dF$CUyLHRflmilXJ@w#P6PaVakavTD-=s`CS(c4vp&?AwfE}qjtoT%VB7 zbjJK%&E7{TIp)v>6)^=D%z0-XY2~}~n0lAULud(LZ4bJ^ap|B;DtX@*twoE(M=YKv zy`GU?PaXu_YW|(PbkMS7@zHk;r%N5s_UR2--jyWpJ(kxP#BL*xbBB*={*%0H(9&eI zlH^6(r4A%7;=V*{p&`l3v)G1gyM|V64El2F)Txer9rOIU4efG-{WBEOBAx5+Ikv>vXIh72}Hx@<->UcGJ0h z4bAoV05tc(n^0vZ+g*7oyH8NiCvavHUhufr5L}46SYRxX&+C?g;qG!6LiKbTl@Iy4 z?_@J$vC3{0Ok4$(R^lJmwdi~V=PB!&aFK7${BsU8?rIdHF}V6d*yzpk(KpgV{u0Jl zt3!?J$oGzU9ke6gob=gc=SL}){72>dG}c~iHaEoL7ZQmU2hk#Cgl+S=^sq&}Swkhi zeEFz@Id&H6F4dHMA>5JL4d%&PMO9<|FR{rMlg#f>BCG8mee&!lpEs#NOmT_eYQ2B` zQEE!eQAGSwW`A+AipChMCfi@~kKH)Pg6$aSFfm4nb4WMfv)DG44u$WA`wYnJ)uGKw zBF|Bo)20oaGI{QaUcFP(KHUYG(mJ_=xwsm;#fJ>;Kkx4NaXOv+ladzCYSw%u z{A6lQx*Fi(aIzRJuA?(?X5@m5TRucrjN05g#AxNHjRse~J|h8N#y@uJ)q7z3^Fxji z3c7x_3wB8ZSsc4fvu7XV`@mgB#CN~D=mNg15lKjxk<@$({2^_g+j8~#t0;Xj9n^1S zHhMGh4=1p(dRr#@nYbT+UYN-4wp4CurI$UpD&Zbo&3%s&ODa+cEXB?u#=`vJ2?--d zoKDW^*`sxv4>D^vY1Ht;HOuEVZP~uVM?Knf_@GPs4y|8cJP&sGcI+_WQ2+jw0uO}g zUF$X-GNei4l`T5VoYSF$w|D%p0G-Rr$BR$Oelb6p=)A4c_c6!#5IQaW1vhZWAt8M^ zzP4QYlkqaF=plcO&NI*`VWg#!c4GTN8LQEg+3eI99k7J}9ksDAp$63aF(%~ENX(tf>F^G*jW4J`Fh1J-z4g{D(CAwOM zb)|-L?h)>94C{b6bxJO^3LTS&ar{0y)*ISJ9`Q+qRztlEml6X$X-*7`JICI4t&gIV zAzm^Y1qRu%q2SRI<}u)8eIx6EAoL%)C4szi*U0iKdT1NQ_NBS8dCe#t-BGPL=t1-z zPbx#JK|=G#d11qkkb!$G$iQ>RK>o~;*43qc7IDrYBYp{ZGU5mE2KL!C=_>Au*WvZJ z>(!KzvS9guQo{xs>w(C4f-**qr|pIzBm_92GKA{u9&0Vl;-Q5&?xh?fY)+iPC4IrZ zy#>~CglZ$^;a19^Sy;Yfd-k#&JA?`5LB+>)+cutELUu=wN_l3v?Jy5QSYJWpW;25A z`FEpHzzjs|+ziwJ%5$DP6&yN3C4whBh9k`ZPVKr##xzgxs4)Rl`rE4peU3k@@C6;$wKp4 z+JJPal=c&za14#nC))~z2WBg5p(=7ET*#cTe@1ti88jLC;m%7RTX^dC40>Ia<`0OW zY;9F+#0^thQiD1375!y=QT>geaq`MB25#==fTdQ<6R(LMT}G?#=X`ecmuuEsxrX&J z|M0=$(ye>QCHNTk%91WwWWaPtgFC9%FkU@m{Zv_oIrYF&cQUsyIH^VRiQjHdt`-uh zv#|U%T)fIEam3krb#nXzW=1NNnJAo)edGzaBjY)U&O?;Pv0Q;pAUg>4z*dM!<(;+L`KDWuQ%llB?BC+q+0 zgANo;0XhaSs5T0279 zS_0G2!lM#jx-ft1Rtk9QR`JHY&8E&dLYvJbe+Gg3JAun$&TB2vq@i=({rlv9l^#FX zT)0bUyP4ipMs$53=`&o(NS#JmAj4?tStGhnGANKI#a!ZI1z&oHQ(%zJKpY_7xLBU_ z7)Lg`XHK@?bAbdp|6DmA78#SZE?1*USr8y}(ECFCWI6&F zAyog-rI&Muxt=~@H+k;M-{wrVJ9XA|*qq;%cdVyHqqOxpZkMLpBzMeS*0F^!VeRBg zS+BA_{+N7Sn!I-Hs1DOJJB-Ew+xw0BupejMze?wxxJsNqi^gX@lT_S;%6ob>oM7og zi@*3FB9w5WvHDT#4)thte`9qfBs?3&Q308IR6fh9cYS#^rcRxh;_fxNPD1oG*o;oY zr<+T5u+X$rhs&Gi#7J9kWqx3B7izGYsEd@jiDJDm6DkufeG+q({?iny{8;vKuB(fS z>)hX17yR-!`RV0v^y&uw2XpUfnaW%1;pOFFnb7-~K7Cv~t!EuC+=k6vngd=36bBA> zE!NXza*XhJOWg2ZexVIFT>6@A6OiMEpU%Q25V8pDqCztM*v#UP(#>?5KwrYNFAY7+ z;_ybY2)uzoTDB)PhJXASzWdo{;BPv5{9vuU6AFk`DVVUg7RCpmH>`O26c2og`(+8w zb9(o{N2HhdNRQsQAZyVgnGa$e#Z`n4SxXJ7tZ&l=p*CRYRj|c_~D+?-vtimP7uD ztp_2}K4;YMuP;7*dJ#YL^zf=59juTut8;C4w8bKpP0|&*euS6Pd2C|ujMnQ%5EK_g zBUoA{hmo3|0&q7534F2IBHdoFz{-)`Xp0AuruO+?Cn$+_{9xUrf zw5gczqLieGlLilRrZO5qWaLR?L}z?uUkhnCIvQfCz%FZuF>pjTVu_CMn`-Tyc(I5p zx;Sxft-RyM^XP8qg+wp5ZpC-E_U-|VkOms{=$%ujCzYSY&mwy9l<0?*F00vo3N2f= zqBF?sOmU>35zJxmnI^AVgyZvn`30L*;P`PNNV>8V9G1YYu&ku}xakADOZ3QM`X%c! z>l3VWIY7A%KsNrxI&INq9CPsa@q-u_>$63dL!@1*HCfA+W#Kaxg)W~5twO)6SzcB= zm^omrv6u(^4`rcSR`1?f<SEX#d9VAUr5@Vlf7ON4`{*-zbLU zur_lNcZ6|7ALzJ`12sK1TRAl^Pnh8K?_cuV2hkUzyZRFI7Ou=lx_E+7XuW#X{%`X0 z+w|?T?%}fw{FHBQ6n$T4qn`5H?1l~SNnBu>UOfLn@aWizpjBXb)&$*(Bg)fx542fI zl_xz4zf;-m>eKsI=GVL=Wxo`RE-Gpt3GEx88S2T~o7eec*gw=0*M(E`1I<>fphw{$ z2JRz{$)Fb9GoGmuc;GosMR#-97w_hvXLdA?3KDI7`R@E4{#RZ|i+}^1+E?9L&8Lxi zC$2NZT-0xJ6>mr*@EYht_&USqz%X{+DlX9uW^kDTCn7LYn;EsHIqAw~IQJ9)CeN>!$ z=SA_1N(688rIi9p-Q!w7YU{k$uj^#gXmWfNO29t?{29Z$%t)&F8rhie25I=j57!pt zqgh9lIzBFbr}$2EcbB}Z%~tv}XvOKA9Q;xmcv>0O+@MRLG^#nL)azs6Z)Q(u3!!bW zjJjR6tW@p(O4mHi(^^70t6|^-;%C()x)w}##nBBtD#7Sa`e1e|13m04xYKP<#L?ox zoko-<15n{hd;qzO#!oijO=lMdw+|T(Fdw=t1@*Auruq2Sd9!)pY)GM-=fHWO9klfZ zEZHJWY1aV?mOk*F65vw>hQg|*O}^=#zUm`<3$mx+?q82x6(IXM0?~a9;VqDiaB2~n zG{|7SGL(4p%9VODaW0ApjdOPfQNDCfj(8ylz!th-{JO`EHf`3m{XDnkzKLH=Zdj$i z;X}3QtBLz+=4BfW9F*4UtG8XA{i&lavh9lHpQ8Er0e)85XMbq5qsP1U>iKcI;l^G; z@pVCfT0MK^;JuN(>eRW|DPic{bFPzn)*pKJd}VK@D}v(d)AFJ-urd(yLNz4=@h?Zso!Sv}XvoF||eyZZJLMNV$VqK3sh zD2@T|R)xYg&kdJ|`Yr|qFrUmS^845=?U7#yUezgfF#Zld9r&v`-g^(}K?w9|5z(ha z)b~DBw4YBI8x%kIz^!``mO$^i+$m%Is;9GH@0>!HK<72fq|04jd?9d2y69vvKfmSH zE_3JhTpk984ESbJXj}OE+b&-Y?t8Y!v;}>(`{PyyFxCxBzV}t%T%q2s;NbS{6Pp?A zmi6l88=O3M?E$0lSWHakHc71mY_fXw@Cs}`eccYaS)hoF?8No*{T#%iuzMe3YlBwV zT10x|uo+|4p14Vu7-$3&F#@^`sL|x}PuLMUEseobKE~7jhsk=Z*cyidbrcjyde?yt}d=8RrxKhV4fd!zprkzb z?#@Hbyg!xQHR8Z=Q7n)N$Qy_*oQBMcka-4Q!Ecl17v4)PjvfHL82jvT|kg1Yq5jhdJ6Ty_)3Lo$p!cL~PgGopsx zxbZrK-o8O^-jL(ToDwdhY_^W5JpkJf@dO0T>FcCxrV#+B`;d*p;F@rG4#~TaUyF{C zy!0-yAmY2;Y=&%t`L&~~OM!%QH z^ShJu`xq3HCR{f4Zp7asdAg8F__su!f9<6oC!*TDh0BEzaiXCVEu_PToA5MP`iCuB zLNikTr^x$k!C#}+HRd>6z;t3Eq2(w`Yhp`*q-CR*G9A)NnGS;UC`)T%NgGOVK4NJf$Z4fyCFA@( zO}aP+Il+-R{Jln|-X-X7Rm`Uaesc@_QzR`Lj>vSFddv9;&Z8`?iJVqa_5m`^e|t-3 zCL)hHb3{X2VMIy!v@e#Uh5lB>d|Kc)x8OWQ(z3ZZT1E!}r`}7dP?Hd$tPw*uri)IW zBj9X!K|@1moIXuk&rS2ooQ@CFnu~iCWNUlt-RC>NH*+%A-KY^762^adxm25J?W6v*b__G(5+C zstHXxjl15)!i}4!y)fZ}k=j?4LjY{4c+!unQhi`OMhv0Bo z`U#(ldQU?{jPk&_YP@TN$`4=I27ryWvVWNTcsGF^uH~scHQxbFe!D7v-}X**vv=>_ z(ijvd-6o$gz1bHYUPdAxKyN&k8qsgjxp(i^b9yUj14!nb^ancf&MXzy)qDR7y2>R1 z(^m5L|5|+|wEaJg{Xe9!UMNM{O4N~ji=K))vb63b^C$EN(b#uo`Txrsyc__@v}ZQAY|yzY<23ZBKP{REGJ?h+&@%y;WATmU{$1>!iKapBopppItcfs8d804>}gz>IO^w)u7uPJy6 z9Nf0P48g)6iWu8{!D{?PFC2#VdbGRQHZd_*NQ1?A-D*6xvNsHt$K%6T9qeawz8d+i1&u-Q zglL1G*4@Zc36Yw0!+y}^@=!9Kt%V=`(e7Ad*au(0d0YveK{&pGzW`{(kGg`3{sKps zi|5O*hbpkC)KzM?%0TK>7sbm;!bKt{#v$#jMk+4U7gqS)!f{c>v-K{yMG3=*Mf7 z#8~&(C|@1l4F7?DA(iOJcd{$Me}j$t@89Tfb({cS-OC>JH%v#uQkaG(OUrO7Y+i$# z;Mb4g4qSzC_!lXR#*{=ukO4ipEj?p0=Qx2U_-Q-U@J1Jc$w<-Zj7X+L;Mbhp{3pJ% z>-=VT2>VbWo`)wuL&$^GFd0w7eQ`Uy55~bXSWP4M7T4nj)=H5mJGWHJnidEs&ySurf^Wf3@^=mkbz2Oh=$9M5AfJPaRur+gc_Q7LA@ZY_A z;dKh#Ha`=(V_0kP=jGPoOJ$^W)e}bQfQ!+Wosl-O1&KhSpsp@rth)e)zyN=Mv{6fN zoe22i$KkzU-H>j7z^)%InLsMyc09bZ6Jh*M80;ILg`B_zUk=8r@EUw!OGd*#;N=AP zdEeo~`*4+hhj4G$d%hlg@Dz7}Ex?gdC! zQAP2i2cOv=b4nzu3)L)q?jCf*zd!y0|NS%6{RZELW8Y^?I|vuhDWW{z!cgb{U&D0# zwKNUQhG5cYYv9lD3J8WZ@HH~Ld@224)t~s7`;)jRb+KWfGnFw>dcjq%7Kr(Yz&84G zmFceIJ-0^zkJIkLgrB)0_$B~Hzz_TPqbKDVH3AH0L zZsJL3ANp!f_s^y&^14st7075O;-NL}%TwKCc1B6@H@N!qaZH6(_wlA*VKy$rf5Hj; z1e;*_&v+H+!4>73e%~_*?BJ_uGvThXj%bpOWmF0+nh)DIE(44A5F5Sas;=|522OFdg!#1d`FsN_{ z9s|vi_Cw&RTTdq9LPcicK-O>3Ic&Aojox1!qb1OcI-`!R$O|qcm2Pq%sV;HIZbk}% zE5H4E>E==w{bBtw7pVRkfRMfoAHnBN+!a3yf4LtYU5V$w*j12t02(3FFTD0?qf|V4 zFFtSu2g1!8&}~(Irx&pH8)xkk zfQmEFiSj5qYaSWPOk5oKL)x61n&^$7bmIg+v3PtF{3|ipZXocHfRE#6y}!nvU%Wl7 z`Pm<*Osst!|2=b9Adj2j5cpCWvfwb}JpWc$2V?N!`84RSbmBVx{#It~sh8#ge1zuy z05MaCFCR%15m43nNOSHa?t&jLoxm0A@_M$uQ`}rU0R^elI?{oPkveS@QD--7j4NnN z6uRE!+|$rte*z5I@!dAar)~bbyQHITiTsJxhpo8iU+9K#4s0^RR~;tusK!pe%HE33 zg>+D^DrS5cGNRxlfnHf9`z)dM2Pv$y7EJb|--c0ayJFQwZqJty7t{xR*~Q{t`g z5)sl5dwcqUH}Xw_zwy7I#=bp%#>*l7_x8{pkEFo?U?JW*1h>FD1()IX+xBXFOyN0N zwUONr8qp>G8_?+^ie1DpSW3uk=2Y&OKt#AfchQq}F z`~yFOM(|HBdjtoAw_UitJeb%myAM%KYg=x^Zo<_vzYHm++{NJLu8lVOvDF+yjNBpd z3r3y8cL1etCAQ5L;NhHoyY_F!Pr*C3!*xg^PVU)eIBO)H2Wgl`4q5Oossrg0b8FSg zU4P;P-mk>GXijia-r@*+tt;uti2o}KTMVQtyri$ysnKH1r>A$VfdV*j_eXp?^Wc6U z26hVQMW>~s@ss=g1;BN>5wU*;qxbA0js)~HO%z_jm-v^Z1kZ57+n1#8pq#l8xzX)P zL~H1gd~GFgCv7`W>Baryh`|+>pnr(Ld5jT0i$;Dk3ktUH-oc-^+J(sQA@LFXMfI)) z6YyX70o$fD96p9n;y2BIg?o|2-vOL=7Jky_ROXTe?dNdCvZX%0t3|d%uu4BkoFHu! zzhHbmegxjoXe;(1j>4lY%eNvme9{^Z?~F&lVCfaA+nflnEovr@8>SPO&4}#izC}(a zyVb6~tcHjiuZ@i(N=k7=DMNWRn&GeKZV|^p zt)oZRZ)ntL!y3G<17Ph~=??P3GhxJhXq&F^k;;4^DoG>VGpe)dws;!nzz`J_rYvL17xx9vivj#Rf)boN*hZCM=S8fO>>|o1m@Bq*ykJPlKy@nOyN7=6k_0~ z4(%>oK>@-_=}1f9WE=Z{|5fqJ)d9TVt`dl5$HoK(1nC0e#JJe#K%<&nj;?nG{?``x zvn9|P=m=~TxL*MLdek#Kt~F#1)HP3>wsuDIB%k4Y!MyGG=b?AcKG`s3{E6VkkbP{y znN!~F;&p41n(vD{ZDqscev>l6>L;3Qu9mxf@`v8Z$oz6QS2wj=asM2)`suaRtDiod zj)#mHgW7zAw!!ojunIRr0$xkTl>29lgU?sxt;0EMdbFIq{DYx%UogQ}SGAAg6D=L1 zj3|z2eJpFzTH>a;xsw5ks|KZF@6X8qHfZ{`ZG%N|`j#!j@Hg-j)}sReJ5Tt)6QM=n zetZaA?xDTYCw&3And|V?PuumIJTBK@=9GP$MonyD^A^a0OfJgXo^rx$K(N4$V; zum#nYPU3EO6aJ^wu_sTVc)S&@`keXcO!cFb5iV=tTG7?04bX^!mY7R-9B>o@Ao%x3 z6QHZ~`APmPVX6tNz{zm^+IRRS=+{7{%{w8({W&alm5#3)fv;L{G*IQrzG5*B4XrnS zUS$-tQF=pUTof6|3UcioC%PYoe>yP~`k~LJv)cTA(rSBr1FEtSKP2s(s4rmn`}pvSl8uYv&5FM-EJ5ax~{L-?RW{O7=bxf*s&n|5jK_$vJTGLAd z`6wN`Rd%&x@@n8dd?Zxgjs&NsUW>cnhp4x&)F|!iG<(zKu z%dI$c*REYn`ors8&7_U@f{7ts!mfjST?++E1BYTIrgm=}tkS8jaS`++IJj}tYu6&t zpO22CyRM0-1b1U#fJz-iMs}pK0%PLb)$$3TK#o+Ud?6nl%<+Q&I{LscSK<`()F(6< z*x@_qgF?hR_IToo562H$i`PLd|G*6%AN3eE74Q!9>91A1VpAI00X$Y++l-%V@7q|9 zL$R-34?p)^WM`WihY#W%J5PMSwKKnRaKG?p#8o^V-(vLM_;HJ}=FT4vUe^nqpsg5P zDQzRpwzHG@A@*^H%7;kVO+M9U@wlQQwSmMrbaQvRg*r+(=o;>d(}MOGfBzNm_`~Sf zah1<ZMLh1}MfCIy;PLtS z`KE+7!E=HPU(InYgyu@jdwvr#joM)eX|ba;bjgvj1aoEVkW(5BIQ-r!>a{>Kzp1{-EMsXdD2#2eLR*8mDS_-NG%Rt-Ot#-R4V|BPF1 z`m8J*X4=OQe~*r*kuM)bx0mbQM8OB^q+Hz?&zv3Zuis!|9F5DhVntz%GLXpo>8kn4itP{*>ms8VKKl*H8en@3;B z6|(A0Z0cBAC9gM>i_gpxtry?2>!k!bzO|)tj+McjQa%4REe|20G2;0Xq>i+f*)lpo zr=@dcv^Sx(#-CWVbLn4r$*zxJALK}JjJrno6+RC%26Yx5LZiJvEpSAhaBMke1-Ey( zaOol65^(Vs_c8v2!M#BGic)Zihx3mW+;IeMrLy4iW{H&qKHMUvauImSvXa|Ik@$qj z#GBQD3!Tb9baY~jp{NjjRtCUSJmM3;zg&TExcYR<(`x|nSMU>Q;z{;txFc zxr6v4nmxg8vEACXL-d_mFK*Rv14K}Z8cUaL9zMj+z@6`RU;+LVx@H7#j68f8pQCyx z1l{$Vq0kj8y-S%xH5M5+6s1ua6;ZTMDic<1(36*;*IpTI%;r?y; z7K+Su(Oa$y+6%l}8lAuS=M&WKt)ig4PwxugrTsxwtN!4f$oVD~odb`zl3?y5K6qP& znCZB}vDmzzGX|-Rx_65p<(XL|q`KwiRt03?7a?Hd+UR zMxPv@F(sUir1z+3637?5rXf*l>!{u4f-24CJU&uYaXCWon0*o%i4$H#YF^OW;au6) z^x~W0=rJ$4OPYo3ATKB{V$PmkE$F)9L99NwXV0#qyY}=73WR@m9aZU9weH_*u_>It zLO+XJ9^SqxIJkc=@|VacoXx4}Nw4e4wN2D|HR0TC+?@4-jScT+r%J9=OfODgmtolO z+c?c^Cy!%pd!0VA<&KCzseOT8XkO4eMiT9dyf%1cc}?}wc!|Ic_mm=;P%H;FlPTS~ z{~)FO--8E*^ui5h8o$_0iH3d86qzbC#w9wtHvt>L&cVh;Be*yvyHWaN@+ftV&i31E zh1uLkTH7Ozh!TbwRdUpqVkyexpyr4>h`&(eMueu)|NC5=V3rn@6w@PuUu7crt8!sn zmqd^7Chj3N)ihqNHkGQ`a#d6|{yw&Tfyvd2MRhuoew&!U+`Xz8xA|*fHWzlR+FlL! zk(=88h-YO(ctXOXNb^m?n&(PAEA>f(DVl|4xew4ncND$r3H>8ia3}AemeWaPw?O-- zK$Y6(i9AWg%k|vBTNgydX%?@UIrPk;vy8t$u4STIa1%!xjhlzwMq|r)t85HjwpEPD zK~}sm)|e`Ic>8WMXwhtkz>i$jh9l0Ed}OBRtv#hVBCV}t6-tbQv2d~7 zx^ArMM{aY;gnk-rQ;xMm54)P-Q%Od;yUBR1!>k!&cn|-8K7Ir@!PKeKQJb*Ae{ zRzY>D0KIZZIh}4DhbX)_43E1Uy|x?zqiAk51IM@N*sOh%(e-NAsIk1>ms=)G{5Czc z$Kbxbdi9vrq)BAh-o)+6$$f`^-n507+I7={p500?GCLx+QRCQXq28_#t-e}Nr^En% zgHy=Lxof+2)w&pu#Z>YN3vH7WY^>(&-#lsBmX;muD_5D_Jq^-R=OmY4w`Kj1NT?B! zScmexz38FMLn8MiI)mYAiF2xr(kh`!qJs=dcwWYnt3Jw5;;{-C_>xggXmO#HEe%_8 z@;p5>w^PLJR(5UOW$eh#ou^NS!S1oPaaW#ypYBu}z5`2$lauH90|5q8){eftUOt7s zcq0vK0!#e8yR};~y+Nnl6XwNFPpaZNes@S!-z8Fy4eKmHPe^tX|`-*bWV#_JqyN6Lsh?7%XH4spe;c+k)^*T}Mnz*VXyL>qL-DKN3m{9_q-Am~pD>83WHjQBla%-{IthX?j#4r?5= zm)}k0PWqcL0?U_1sxg8S&-Ak{iX+3ax;&AqtKNwh_QUvJq@=K(U2Eqx8#}%pp8X5T z4eOa&J1??j|8y9DKSCd=;=6s6f?t7M@10{?y1_tc080UfzdEiS+J!Dsb19^6I7)EQ z6VgWcAeeYG|B$JQ*hlF_ohod02BsPp1V_0pE?Yb>=#>1Mo#2|O=45{dNT2}cZET|T-x z`IUmcS@GlIRHHF<@zWJjF#2}H*1mPz-0Jk*IzkE-((4b%UbSac_JI0}sx=)tdiCg` zO{pkl`EhPD77&4u&`Cy%wItbaqr{2-tod*@O9jbNLE_;II>@nUi6Q6h?Mm)mnDpA=`llkuQP2xMj6tfLw5d& z!&_tj2`gh-)(`xk`cA&#;**0zQ8#H5N^jn)Pptsy(#^}7#ZDtXK~akv&dZhI-$G&H z9Z@i!ey0Kv@4Ut+Y%2;wVL2#Fy2j2RQ6AcfD>Q+kVI$|F66E`@F zq9;l*In#0Nca|Eclskk+E9oAk(#`qxCDI8Vp(#lZ z620+#_9jS9FZzquD(ME69&E|)uB2zO^s1Jaty39%Z{C?50Wv}abb`JR&{fJ*o3?-`8N<);oNOAAGjmGRC%|Tm5MOa%jcI!uVG1l zN$-^*>1|kgq=moFh2a!;1Wk=DmJ`Y-mIt9#zT-ruwV3ZXi@a$p29`d8rq?v56Znhd z^ocaRmQ_873VfNK1T!2_D|Dy%uh7&w#raF|Rkv7gSh^>wX>zpai@xX|VU87@iN*B5 zhfL25g}LlaNU>h9^eROoto4H8RnqHQ$&>NL^t=jZ;Y)7Y!V+RnLKQnK(B3b)t{BJD z(40|fs4K|ESmZ}SJzR|nh7OK%ey>gouNr~yvqrR|QcvE&Un9BezcN1GacAl?U zq#|{P6#=4#7?iH!zbTpZy2gxZUe}Nf}0{9lM2mXb(!oN@s{0nCIMbA|~3zcL!@H2|x7d==1 zYMpL|Pbzk{@W5I=Lb9BWCbRSc>vSvlgw8VH2U56{9{N^+|A!TPLT8!qm2?IEDx#A~ zFhkl}3jQiHeEF>cCqnFDhA$=+h2Y_4_$2>)ZOTfP%W{~&g!6$EpJ!QbZ z0HI<=8SpQV#`S=}`4~Hh!F*p;kjjT^0`;@y zdPI&z@p3xJPt)gEr(3~4gXVFbWxzj!0*js&!!L?20sjnS$?%KfOTbsst>B+SE4US9 zz(0pPxyW+qKWBztivDwNz`sD?mnEMIZ-sxM9QaB)HwjVWZMW4xACI3m0$bsgg?T9;q>zeb^bUD8{o#^>z z>Z&x}yLd|3JNudX7U?rcUm73>-t*VeZH1P|!E}NH&I29-naowtkcG57+Vcu554vYw)gZ6km^-((&TxBRLw|KY$5+O zrCopAY#W6s?D>S!h6!)#5F)!D`F!R#oU)|fBI$v8ZzenT)(nrOSEjk$ejLsf!)56{ z*6G|dX{!SNJi3855%}jV=`ws@rLB^;6pnOTfp3u0p)tNLrz`ONtkV_xYf+u!XQ(z8 z!)Nr@vcP9=E%ev2z(2z!nbQgUS{C?9I=2jeE;dCk2weI8wPmEQ3qg(9UNjmpM5$Ai zx?DvN?uB}}MaCo~P5Z!)@0{^#kJJxG;Jom>8W*}Gr?fhiWaxt$_egJ@keC-SWZAg} zUIBxk*Y1UL_dk#E&__J%Gd%AiXQo4Rqq@(X#{n`uES=CJcoVuq6`egVh5Uy;B&+DC z=*2%KaKB;es#(}k^h4V@TP}p&mKRVL=q5>`$pJEhZc!0YG4g#Xt}42^@1|#0c@Xs$ z8TT}lq6+P;ce#C1^FZkbO`g+4eU*71g3zeCE8UyE^^@wvKl;7ah?B?=*t&81X8=R|y=a9!kfWT0cP@ z6YC%K6xVt39M1fpy54WV+h z6T6|-MSl@Eqs=&F*rZ=ni(^XCLHkNMjnrv>CGSCnjQCG+AR39fHR-i+eB zByBL4NAhM^=Pi0ATtvN9uSni;rQp6IdB>H2>ml4n32GI|JHBLIl4h3MctviXa2R2fc@^!6pv1NH1)Bl#^UKbXk&OPiV`|3vHjG#$+#>E`?s z<@`z;{hZ}L^+p^0oaDc%1M!{<_@M#|XXityCj=13_kyUfxPtkY@iV;IMLkM>N*Xe?wx2aD53r)Mo{ zb~2CY*y`4uV3e@2a1b>DseKe$HYww?(|k?V2b;%do7niwJicLX6}w- z+1){N5(3W;sZu$rX_vgb6}{Iw@AGK=g=ucL&13RwZ8tVe+Oz}E-Q<)l&6gy7_sP`W z4>S9J*bP;7ch_musysCqqkFFQi0;`S)2nq}(^>;Nn(v7H3ca!|d*7Z%(2VxMH;?1kTX}xTwi5Hr)8%m)cCh;Zy`Zt|0^A4zQOpsg2RKTJkExDXfsBEQ*Y0li z9AfDZEsC|Cyp|CGdAh`*i}IL&myBsNB*3>>#5`?{?uqepgFM>LJlQ&9>Ja?PfV{x~ z%euGe*?nBML;y`Pa{88yA&7ig`bSEiFwdN>j$`R7tBehkr%Kc2{b`uUNo|7_^^nTt2F3FR(E;;;5=3zi{ z1AHoJ4ozLtqNIW~nm2gLvU$#N!I4V`cWdGYDBy!`n2nW1_u^P-WrdN-N|lEkqXtc20vOliT?z9GaW=3EU@uXYuro)6n)(M-u&|M zgkLK>{{w!l>VW!wU$Z{Dw>h2G1*x+wiZA`O*@vX^A?cqfeb+g2I^~6=Z?#V6Mw7m7 zpHPj!?aS(zJ@Zan0E-yRE*p`zZn8VEsZiBEK>79!GW&xN8|~++7xt~hMY!w7JrCDu zG^xjn?o+zf?AGW&hYeZyuYXoo9R%G^UYBaj`3eu~b!0p&T@d+UwV{a-5sAaQHVpAi zY?1dUbI{;A>&BoJ@##_ivLD9(BUEFzC`VFPi~5^Uu6`=n&xHCsr)hNgBsKh?$OA{QPaQki_ZNujy^3?sx+!IJbg_5)@Yyb ze*MA^9?T2&59-h*D6C4=xahF3=(ws?!h(9Xs1h2ShdQVod@FbFUfI`y)gzO)*o65- zV~PD|^bvby+T=FNTFO6k4Me|NNgr!j19{2v?@`h}VZI()OA(p=h<}z|tD*Uo zwG{HUc&&!yH?O4-yv1uZq`Y}8|Qaa83n=(IX@)a~+T zhwxo39b-xFfWO>4u(gvzqrNF^TQ-Pq6qZmkp=EOyUqDG6<_%f$bsv03ljnpsjGMBc z^U9vd@~C&!h;_oSwt|z7!P`Y+=bSRMT9AE;U8PDsfm)4sc=a}cA%(++kPxo|+#MQam+}4@{UaqR$%3_-P8;Py1F})@ugkV=b{#;HoW`fa0}*>RxLUdxp=8 z9;`kGGas5ftBh>#HW$FQcUim6%;WRt1FfdG1(%j`6%23b;x!Hz&g#&sF}@3sm{)&G zaI@A!b~T&)P#7qSIjVZ_-UfbdUBP8u>ZnnZ8)*DuEc2qf$y>Da-m&|m2yc&oiaBnWXqJuyf46dp&R;x@IHj;GI^L*&^M#Q~ zp64^_cR`z4q&97z6YLxuI3Q`-?yc3_YS!}5r)V9#8Z`>u=48{lrFY9pt?)7!va@eo zwczD5>iK`LzhNk&m)gprOZ*lzgmY!JLupa2AT9QMim9fTk*WCJJ(hhnG_n7N52HJY z`q|yu?CIJ=dRcdUxGp-lT1xe<&g$sCJtOiysPTF0`1YOi7PoBd64N*-uxdh&0EX`? zA(!B*EZb%azBmg)3*V)s#Zb?`DWeVzp}5nUHaMvjqx=UYP1}R@j0VxIR!~q()kuX5 ze*iZbcq?gKh`P;NC5VN|yGqRq~Zjt&`Z zhat%QP~h{x-!;C<@T6&7nuP_sF0~D?uS!clBvSnnsn{ z&731v@0`+zda(1g# zpA>ZcH@an*vrAY+i_kVdd<$HnQ*iU$(^qFKor|`sdOB#MYfRFr4VA&sE3s*v>H*PV zAx58oF>~w(G;W#LzFimFAg6C%LX{RE&TCx#6G&leMf1p` z?QZB7*gUEI$n0J7njzr*{2Ljc2+!<|Wr`?NhZ<<@lu7U?C6IX0{9On3vpr zIj{Bz={&ni%{57$fNG>JY*%`nhRtKJbsD<9EXKw#GGu3nicirw%UxD(Wv)C5$z375 zvQKDq>-Ij?Mt7R(Yc!4=KDd&+N^6Yp@|n=HV|o>bs{KH7|nEVz$@%vHSg`f z)|f2m|7ER-q*pI`&L3C(LehVb=l}5v2$j=?+bsQFiS)-bzxoqP{)xru!flp*&pMrR zCwg(5`QLK>NmyPtCg}ve-jbiClR9b7=+VnD!PHi>a1h1Xr#6Z|K0mI-rF8?7(mRZp zgWdK+PGx;S9^U|8zun=3T;Dw3l|mC!{gAl1d1x1BhDmX;Gty;2w3^-LqiZ+I-&hK^ zUt;S4nY;UHA)#yiQV2|qcC}xZ_eWK>mg`g0-o{Ox%+3W?<2YNvH7X`3CYo9Cda`w4 z-GzMHhpS%Y%&wsjD)AojXqJvzn97i9Qr_*nL`dWF$dY zRr3ZO418}C@dQO|Jt-|X2`c#MPouc+b<0Hf3)`U_G?8O`oG3U4Kd}I9hM~jAU)``*Bb!wgX{)^;#A~f?qiGR@h0YqDHw*`KX>0e$wMan>PD)TnH z%@k>@G?w+z9MKj*C0-@tVOMqo2EEb6jVO#@h^tFlMRf=|-vwr@TkmNX6ps($Q(e9~ zSKrR%2o|qqjQ_U}?l~oI=Lwr$*I|6>jwN;kH-X2m6@O>G5xt>C9iV(*VlKMwEt!z7 z{6&1jeDU|u``Y0zQ{*p3yScorb$P3@d^OWeOEHq49_FTZOWU*4qwIhJy%T-~O1XMf z+Isb>cq6xPS#GXCZ|R`C#}{ zzl`tUv-sZS@#8OpFVq6x%j2bXr@+MrJLO_09~!0+em{j@pgHin5BbxQpCd@(&IZHhh5|}Ew&(s}AQJ4rtQ>7MDb0G?G zZ`A)1cjQ8=nTRcb3;m99wp2}ROlR8zWw!lz2@P<81l zyeLeT%d5tc@;0nIrOsTQmNl0nWmtZZ$-PeC;uUy!W&in4b9iqQU}6Q zVn4Lxfd($40Wpo**eH7MqR0n>J-&t?#Kh%pnhZVRW1NXP_q~4LU)Af=;&nYfj-TT_ zOU-ap)#NrpTDUFHYkG*B&*y>!Qf@BhF;B$233YoNA{>=AqV9zanQb6#OQ=NJqCLC2 zF1kASIf32>BI{D?uVzsSt3z~Mi1Y!zZ_`OjCpD#Crty6fo92E{zkkNKuU~yVj(@sr zV$-G*mywsrS84}1(W|3+AWksF z7cb1)kzKe@*tu#)aUJCn95k;xwOCPFA$qEbw!xpKnl4C}h-6b4Ee}auQdyGr6vq@@ zZ3{uD4Q{*wmcp_XxG@}FfrsFsE6^|Klb*C1dP-?hN>9{VTH90BPlD?KyKBsg_9q4- z^|k0SYD|=?Y_-*%w0qPLFIub2Z18TmIhh+bPTj8jNlzLwBndxfe+nv1-3aG4O|5kC zBKd`Dl3)C6DZ)K@FhmYclA5B+?#V+}t{9pu%S7cS(@*RO#Iexb?!bSPD`ifFqFibl zGSMqEc`D}MA+AhK#5C5Xe&aWZ2Z?;xJ;Ypepr1WAb8DxR-bJkja(+120)@hm)){{UaS4gZn5u)Y)o@p5z#TICX6(v%#b6TbIH=8W8kYMXMOkXr9|_wvyvIy4)*sMhux zGewpmI>LMjP8TEJmem_J6HB}#7iGN;K}+P=C&b_Qo!DI`d51sI70zsHa-_>oq{~~O z5DM`U*`!dnL)@46`nDJ-eQUNI#4l9(1Q(V5rP(K7evC@-Vr)V2V6ccq*?AEIU*BeB z6#^a{*|9#s)C`ceC8ZMat@7(;wj z@~dT!D7fV{ELoMenFQ1hh-zsk_8Ogd; znipBlW+|m9@-B^A=D8SiT6y(i!CfZAlDJDq(4136pUcQsl7cdMDHEPj)1_$y-*?Kp zG|!6G%B9QVxfI;8crLBC3huID5?Ez${ieLZ_l-8Dvpg4~#uQ%mgUcR()@|9`{ zZ_1mNv}&WpdYk&DY?w^aO0@mdvf6$b@XBh_#d*_8*{F))F4OK%c%|BQner}0XSwn& zC*K?LHq%%v@3QsV!b?f}o%V+PeuL+?<|}Qd-YIXs*s_!-@6vXnO#591ytm=DvS}0| zmDXEf%KX12pS4XhLwvWq-)z&?@T}}a`8+H3Tgm@cd0Xs-Y|F~kTSa~{&u^j8TrUdm zO3t^)Th_|A=S!GDO((+C#&qkHt`5pdA3EXM##;w@f z^8AyM`IMGbVR+^ECuSN;*om^`UCMr!+g?ihDN4`!R(*V{e_}BxVw1coat|ZR7LMb7F)7=mGvyPV*s7W*BK(&thbg7pABp} zTpMWQwNbHAyBQkq{Nd?u*v2 z8C*gOokruT0_bEq2!0-7wVI$G5fA%d1@4bqOA;)FUVm=b@E0DQ59sUgoFePy-5`iq(!6`0R;h(G(b?0t|EzujiQK@ zhzJs51Vlvz{i>+g%NPCfRcz#L@BilQ?&a=sA(v3(`}+sx&F<{%%$ql#nfGRPW{#D+ zv#_Ew<~3zKT|j4TR_3!#;8_z)j(7q`iZPCzJfu3>=A`_-Fwfka{SG$wSIs>rKd*uU z^EUGM9~%>`Gb+ng@b|POAqI;bl`I6|9Ffrw6et!fmQ5wEE?xTSBa81GDi7p*=gQxe z%Uk8SbOpU*4b{ys4GeAm{PWF)Z^m}dtLc~*ACX4CFEB42G=x4%r_t&3(H`Au#tS_I zo4+U@lwWDCUhKQ)26+NE9P5ky%DB;A zho6|@qKpP9CW@^gNTY3ruFmZ*pP{SY{#yPyw{$ur^3tyb?!E5#Npvf?yjK48Qo)8w zRi083&fj?BtUrTw3^hiv4Jjw+YMw7MJ;kqi)Kn?YEC7+R8A@}W>EGPD=JpC>YMmxS z8X}ub^uroaUSGp~RI`!2c6n8SI0Iv|ZmfzB-3-J(!yAE2V<;cRepx&UfAWr@UHnWQ z-CZ6>p)UVL7tzJ^Bl-Q4m%~nqvua)t23}qzo;B(Dzb>~{m{5}j4(^6J{sijShXmnF zH9NmEGAPh!(BXPJqah>RFEA1?9jW749YYmUqdG6h$J4AshhKY5u9n|8^xA8Ox=*Es zsZ-^PQzyknKK^(l_jydj@(DK;ee-}10uCM;aP z##|cNyxqHWoh4=(a=nMTUz3!3%|9+5s!2mneihQoqL~UUkeAB~*$>mp57a`hfc-Lk?XT0bx}FN{O48c5 zo5mw%5<_VVeq^<2n|wd5p!d+?adIC}96jU*<%I=wzsj=t9WL2iYxJKO?X?_h#* z@5FZRt)z(`cd)&t@Y7j|FG3|AkE#-kp1B=+3vyHK*rp9J7D$yY`!?9Guus~=zyW^=pexvV4e$vD_y|$DU7V_#jto-*Nzvk>qXIuc2n4&iVgVf^^6}1v){m}4z-={~J z0l#giG-PX^uG6~r8rI{M0Rwvsm4g#w7u*-SsvtI&cB0#EarQB0yCLZ z?%-RLnwNk~Mve9k?A!b4=KOx{j=wKFS1^|5a|W6}RvxjX_w4>Tk$h=nP9gV%A`??O zUszbSrPrK^lK|y208@)VCVnIs*FZ%1vAmgVP^Uu01yIT88{`+&7TDDZi_9x%@6jJ0 zn|5r9d`W(jwlsZ91#?U_ePa?w`BTsL%HsriT)?QgZCcU})Sdd#TjWpvq_ggmKb3!b zn0|2hdm~ZLGUeGBeeSr!ipd)ao(i(pj_Sl-Og%U=g)`pOHgjp9Fa7Te>#{OwF*N0u zcJIDz*dg%+_ck3Kso5{|8lB%^ML}l9nt}pTbN;)6f zZeV&dO4INpx*S?t4MAzFzl(~F=l#{%fcmK2IKluTNR!2Xo2CxfGH~DC+8W7%3i?of z`|gwTHMG)pwov6Sn{rOB6rZ5J{EW*RA4qKV+L2k-N-B8H)JFbF{xOWdmm!$d6(HDL zX^UN+ot-51KzVuNuT!$+y-Z^4vsj8T!Fs@Aly<;kltA3{-B%7uGgU7AH|^iEddZnj z<(*TeJg{DVN$~RUoOsy0j>|iGdlub)d9T=~z|HdR!_IWbo&;)umQi!BXya zrAE206<-+h!kq;>dp&TEwcd8r)}K->Mw^QEv$-Z#Oabq8F%^fH3TQH>IF@(83l50F z_Q=k{hCDs+i!b~2n`G9{C_S-XARDzr*Rk-p*%zs={L97v%KxFp!jyR_@V_86Vdl&P z`bkQQnKN4m3*_VS1^H*_kTRjm@uwYXKJxJ34|;f*rtmYv+B_h~KG23AXj&86W(ocD zfi{HL_6^p4Iga(q0k!H1b(Ny6@B^XIX31YlGCd;iu~k>xgId3A`d2Bp*rs28&isO; zf6l6`=rc;U%#>B3d4|~Ias^oICu_T9r@YzsQ&H5Wk77d)`+kbwYTrBUF=uOC6DW;R zS!dflJ!jJw{rwle&ZZkOC5t^wJ#4!or49050B^kVyKq*hM9=`HBp6U=czeo#|}G9 zv8~y8%}j4A8TzYd981i`ppz0pd&eitN_{$~OI%#okk)OBQ&wko|6ovg|H-rZJd(QV zp7ZZa*xRSq$k8)q-a0Sk$>Kl%HR9M*{%@b4oO>oDr9>N2I_51Hm}>~?GJ9%DMuJbP zj9X?5Hpv+s?ikXqf1)9Ah-<@nB}QI+1m+L7M$nd&F%N{ab0P{4GoWE$_s( zN(ZyHN(T>OO_iH!ew{T{ev@gU(p0%^<|NisxgE;52ehT|66EP3-afjpiZpRQQv`RN4R5H4E3S9X6mfZ>st9QGR8CX(KH3T|P?R^qva<1jrhjmH3H z*rY+xN1E?h$vtRV&i~hZFSoqr4{o`6waQrm)JFloNtx$jW2TAXS%bt@$H2Whj{^6~ zdVDrFk|17$`*`g+8xI=r_YTzfEAYOB^*#pgTUy^=f$z7nzTXj_D`z}zgo6CR?t=nx z4ehx6dnxGyKLz-_H{M&%CSffC`2AEKs^0gt#@~$h{j~U8Cc6*v)Sm0Y zF#TI=)5rS(R{rMV{Xpe8@Uso?2RZOJSbLxEh4(}7UhUuEekk5Ut#H4JTj2gSyng}G zABN9|Y4QhojDh>%c+dKgG`t^y_fRXse7wJ1i4XZJ@s)XVcJ}C}cs~kt{4z*?wRjPF zAx~wF6vi8DPQ$>aMM1H!F<){9WpjqmS^PoWv*|E@4^b9?_D#^#^^2a_t!k??R2C=kxt+#Q}s2J(3WGO`%KLr$B*b*_@4Yd<@fzYBa#M;k}q>DYJQ*`-I6nZ>9kEp z3+UVH^H$N!k(t55%;yRYzAJwwWKO(vYTV8ZkI0jN7q0WTBedCb>yzW}yOnoSp+aNa&n?G!)!V{oCs6ZJ@xP~;wPnpj*vR{v6qiX)yxA^1o8F>JGk*8~S z?UHAjzhL4Pj+(ya-!`Ryx}w__V_GmS7gj=A0*nOIv!T-|h@3||5B0VuH3(74o&ah& zeiz*juxLMd?>l^Nxhpl&V94mTS5CinZVCSgJ#RLLn7$iH&y6wn%JFZ% zU68e-O^Y45m!5qt`ce7AJGxB#or?0sKjbguU+Aqf$5T%lJd&P#S$;&0S)Xjs^U;zY zw=#ROXL=iXLZJK~xt;tI;P+GdG{ahFVCX|_F3zf(K$7cauMg>OH6IG=&ELy|xaQ^{ zhsi@7Spnr(f#vW7Y_x=)Jd>pt$F_SDgJPEYr7;^VHj-^+&;=kgB4fd5^J6BfsFt>w zT5M6Z^Z8-#>2$};2S-OGCPwyoU^TJO*W}d?JhD~(Q}&hrd}{SEosOoppV=P%C*7Tt zbT^d}Bgc%6D(LmoH~qK-`LDhqzSQI!Vm`-3zVyJ$r%%89z)O)d=8aV!|M0`dtKKkA z&xUJ^XK$CP)vfvxim+Je5K#3+p*`BhkBc*Gw?JRg~2ay>@ur{H3 zQdk|)O(##%PweZ6wqkW8*HFVBAX#5|w>W;hd`bRcq@4aTok2fim1O!{@-xrDN}`X! zc!$161EH&llW$jb+bYy;e%QBt33WCCb&tQYrjh*~4L%RRd$qm7J?d&)^Sce>2jTq| zcwT__!Faz4?l)lkW_bS`#8-4Kf;6?onb#wDAZILfFoO zwhuj2^O)OkI+{CXiWPpZ@xZob8y7;LXEY{&V*}0OZo?n?^CHhxkuTaVxoF z<{a$5wfB@?#$=<^)Y^@YxXVt$vzVw&g1RJwv3XE@Y;bd<0j`331~>CH{JlxbhC3D; z)ZEu#FoXuh#<52%j`=yq%tf2L6QTc0WflY;dJ$iTg*w4Xs0~m0mz-t#2JqLB0@If3Fh%*|Dp+P;=*umX{oBJ6|e>gBN+3?;P+Gba< zCi=Rqg|by73HutNfE>C$0YNUTR@M&_S$88;#AmA-w|OIb4QdOzafu2AS`7 z^6uqOYyAw=a?;-SGnoJ5oDZd&U?H)r?@{1jtuE|#7;J3f^{6MB>FX=#C-%E_VI<0~ zozw$o?j$Q$FDoFMK^|tgk=n^tKLyz6C#Si`HQdIyQ?`(0t;A>$3L39R<6Poivg5rA zjE#G-@o7D>YpTw5CTQ{d#_M6H1(ly{s&XdwIx4Xq9n~laG)8Z`ES4tda@R%GWCdSW zM@=KM$XqhNUg_Ncz3)t>{HW_^3pkZCZF{{91UDzLFDA>#N_O_vjg`I&cEgRSlm={x z8&Oj(85r(1b;sQ$3N_EEm9cpcaE4F)~ z5d~~uu0THETA5w4+9F((hOK>2JNM9!&F3`P7HW)4nle}6s-T)Yr{S{j^iJnK#-n|3 zP3@?w7HJdgtE&=oQ%x?{acetM)_uv(^Uac?A=or?uQY>#@q@13iPUP&?L#HuDSCF!PU&@7g|frv9xD9St@6`l^p@ z*2lWnJKwXKJoAsv`81|+-SGJ#S6ksfFpuPVTlKiYeAAQUz|A%1)F_qykIzrJjE|dQ z9?Nye*v;G6d{=O8QN}sfpiQzf<^9g|=lhK{KL1um5VozFy18hNI(}CeMn;k`%qF|~ z(!0_hUX4(MvsdiSu0~R;T$=B5oU<8L`(5E0V5iA8@zuyw8rp;pdRHN6^Uqf?-{?4R zGmK1Ad-_#3rUn{iS6}mLY05{*Yh6`Mp6{${qp`YEW^JCn7PS|51LjAss!sV+*KZ>A zYU=sE>;65~qn^6oP4S;tTWIicbxSFwNoRG zu?(i)ovZ}89y2wLYi^V^1nHzVj4bBb&vn;R?&~1e2BySK(zO(|&BS@n`uZ|%+BK~N zJA2rEe*HfDj@i`l#PymkYs!4QLoHd=qg@(K>Pb_Nb>bPCJacbTeb++!+0R=#&hf8e zHu1F`kKE8|ZNgCH232)a2Qb&V`s>=n%Gw#F?q9tz>pZVl9@lgI=(WembzYHr?K=)f zo7nz)$073mKl;t%e+N_z43%zrq`5MJy4L9PYT$dz+vMw;>zm8=*qg&^g`rjJ!I>Xuj);PGHj?1gTvGEW8Cr8IO z3Y0f|%zOio`VWkwoub#oL*)501H=;`{&NIJ}`TqB1s*CRyZGGJz~4 zYaB-Bj##XVdt1OcM?Q6id?gJV=qo8W2fuaLZZ39l-!Pyt$OfwnQ6QisjA@0Q^|51^ zdA*aj9R~CCR~z9oFfoxcyeJs9g{o6f)_rRJ#W~FD#IzeHDr5XiGJxDg7Lm2&dDlky zH%G-bF#P`~tJ|eXfqxPN4&y~_zM#Jq2S=`E#^C0_M^mN}{z=d@d4l1e1(K)Jd4~ej z2hWki^NM#P=J}VA?xG6-E*t_1jkVjA_pC$jM^q-v#`M(P82Bt~=4Z0ocNn?~U{9&&N6<&?JI)o!k(ryUs4TB#dkUgYH6+PM~+M$)rx8?gof z2UpWX);W3GVg99O&_6Q&;@E0%>91p}=~<`I)VEXKp~=*DT!3;Ws_ZYmrkkdoiHc{v z8>8r#+F7W)?xBZ-34c7RoQY}^*F*UQwhVCW*YS?q7f3hlk7pm!=b928!ZYX8_iE2X zbyO<~B&kh;d{bP?e1r_Jipf)%*TpbHm4D}5AxM-($qIO|*EP8Ls zYRfgWYOQ({l+!Xb`7Bds zHFCL`lN?;o&pNyEJJ(T-l0akhw(DYPsxo(3R87(Fb#+wjnW)aCcLVgkQ<+}pGfJIF z+4R(PH4xmK$iDVW)Eg>&7wm=`Q7Nt%6E~)!8Zt24ZR*b1nW)Y+$IWDSIIGT^;`C8x z6?DS6OK5!q;wVnUC zYLQ;=GfJ<~oQmtBcVZvZuIauZ^Dm95lj}TJ<7zEk&pDk&RGpoD;OumJNH`Dx6qtyFNF<0d(LjLhNt;X~hl0$!?osa6YcKn=c(J$9OE zA7713n|xg9RSEjJZn+-F@I&HjAUtFAr2 z8(^bfO`TrfV@R*6l1-`C_uH&TJ#}AuKI%SJoV7}wU|T#s{1r8#!c>Z!I~ z$J0J-8?PD-+HRdQL3xk**55dukJ_+ay$*7o(ch)VcXEd?uxdthn=2{dX3jR-pDGwNltFLMxPL_ zL)AO6haJyGy%A%X>y*d!UPpRuQF1*$VO$UB*x19GZ8Aw+Mf4ykgYndf>tm(x|A-F1 z#`e%RH{2p{fLG62bk(c!)o2Q~>{WgPgQaV3UwAd}Z3WLly_vqRT(>WMH^sM@Yuxqy zZ}X6X~(Hfp;Ko*-r3ow|HGqK=a~B68q+#M+5gr!*E#fT#v@lc z`}80D68OIi%A4en&>Ozg@CKpR+l8_8-~XSCrk$JQ{};#D&Jg~8aNJ!_f9>Wl7PmY5 z)NVBHh{d|Nw*{PYHpxVKDEPl&Y6AaY>iIXqA7i${Uyp_@{B;;pAJh-T9|Y|K5Ca;G@Zt2>&2v zn(!(6pT?1=)42z`^G~nw?88kAum8cbL$A?v#Xkzey5mS^XP@4PS&W+lo7Z`I;~zxp z^_=$jXM0lbde;H4@#KE;7CBFT|Hsw>I32LMHjGtzOD6-?I*_(Obp3$7LF)$onX?RU z=<)*2$+rwA$5ql)CkIZtj`pce-d4{zz2f|d^^DV-Y6j&WZU+u?D*s=d^XcL=ORAG2 zTFpCLI^LBla`JBNG|NBRUhv#f-CfXLJV+1;VQ2pa82wYClGBW-F>z7Ja1#?14L9se zURp74o^WK|yqeC!k&72=I$xxTLU-x+d4DaPH%~Wz-n@%{ExmYAH~-?FAL!^`7UgUf zOgosw!dNhcbcFN+34u0?Z6e+yOesq{}_!d&X@P+7xTgM<@@8~`hD~GsVP%VJ^oF+`IruU@`-ltoel3jo5DFX?X>g^l9n1D6D{e|I?9N(bXM&EnJcO9dh7i5RYPE9Di8wE@n zQvzZFV$!10TrJ|m@>?`5@R_AcSIgsE2IWS16c=j#X4=7n^NEwX8_)#qMZjf%s#=&5 zz*+=_0JW!7o~!r_rm{RgG%PgqNvN$cyR+}_lG&+K*BOO{Gg2p}yIR7FqffaBLf<|` zOMCb7^_>;s?KRMD^4Ssv`wA)9drlqBhxIHbE zj=Rg>-J^G(N82}V-luQz;{N?UKT|#T9=)403}iGxDnU^JG=@gGSlEl)BzfC1+Cxrp zxmJ@*KXc!xXDHb4nge6#$xYywU@c-LrY6MU&^bL)wP6CaI#dVLHkA!;xmuqa52mF} z9yKyOEls{KxNW;_G<@KIw(SOu=#VyK=$5h}L(|gRv}-$LK>MVmcF!cWbGce?Pi)=0 z&(Ory8(NR@ZJ*quU`|$6L9e9tzP?!*x6bbjfAjlgcBsyckBf`#jI=K9Z^b=jjmEvw zq(L5%9lkYD`6Z)-V$|m0YMXBhm`+-fe~Wuec4pVr&)qick!NokHU*)6YS;v55JS>Z zQ(cBh%@=q1d${-R{aCw@=9`L_^zAoehJtf?_r#G(YZ#fDO6uaM6Y15YzK^KIMSQfQ zsG?9f>C~u8%SbW0CE~07P}izjcC~)@Ebg4Qs(p*W-CSklMNXt2ee&r?AAS1ti58PP&z zb>(q|tL1IPxI)8W$Htc2VNl^(@odKwE(5XNF@?f=zs7Rj@PNWKOkQz3;cDqz8BZwX z%ps#1jn2jnCS0pU7snDVqqQkx2}LHUjg^QtkZ`G>wc`kvYqQQcLg6!u3?p|nme;Eo zM7UOujT=L_T%A`nhEU|ymyB#Q)*Cs1aIKBIHhyqbG))*kDDvn?x;MU`Yk2VBk__q_ zJGk6`yF7N#+Dc>lbGw0qYxQa!H@Mugos1h4e!Djssr3&UT&obLV+NNo=zPrZF_dYZ zI%a4Ox~Auq#|(`taeV`Z<<5%h=h}EdPI9fhb?U3p7PswS!8N^MJ63QRVD*m`B;rfL zf%lfcd6FAVf`2Xy4o=cd@eg`bRuxvAIauaCES z?EEY6Sg&bchu`iE^XsxPU$1PhY`~!Xa@YYD9w%+#RnjL$E zBD-w5)~WAA(6|lv4GkNs^_8tY`}9ivSOX?$oi@|D;l9nz2(7mstaj&>T8`D!tiwl# zh7nW0aapebo!XOE!h$ms(hlFjBpUkDEGxJCl}yQcN}}ZD;b;u5EEcOO;T+DC*}%{b*FZA_{((z9%nVB`=pj zb1$c-8HtsehF@n&8n1Z@Ku(oUW2wVWvs`@ZG2f>v3-?t z7hGkzT{esxRo7QGmK!gR#@Nsr&U;>+WE>3aMit-I=xzego!jC{xkg@HsTwxa8-@2P z8t;uSxl1;^B8T2&%2gu2u?Bym5a8k+Tf<~qHD^SN0C=g zGURIe;D!f8jge7(gQO&E{%PD26AFIB={T`&eP88B$acWkD7|Pqh-?CY z?Z%dZ&Dhe9MBsb|A0_f}@IQ+86RBUE=ttw~A7>WGhp2QX)lqRg73EjQ?V@|+iZN{5 zIZi%6UzYnia4$@k-#IM5efTgFN_Hxf7q^7o_VXz#s)G zuM@?=iZ_g8f^@7VK~=NbOMrK^Rv5%~7zOx;^Faw2e&M`ta*#T(VKKcqov4e0+6L-P z!6FvHENDl8w&huJYLn)^>oT%SmyvUfZM=+a>5F(1WK8rjwvlH9Mg|5(UO@Wf)P8M4 z+&Dw2XUAEyho;|>k<_{8xN-dl72e`o7(`n=*NO%e`rcAFsQ$yeOjMfwPM$(&Ap2@4X0&-`2ytxS`#RHMLvJ|`AFF-kk$wsHD3^D+3-z8 zy*H2AwPMxD)_jN6cipx6uELyP-%i2Cxp;Fd3@^eC+|;bo*zRaB3{VbIqks*r|rypAtHjtb z|4Def^X>;%9ynZzXEOA*Om=G{JqTF!$C;!SB#}H!9wlYOOm*zLWIT%6UrJyVui6YS z2CIEQGlFyp859O(aZso1F&nqCy=2VFNXQ5b>Lg@9*8`N{BB8AS$l!daq>GP@6m(Fn zZFvac(F6<%7vbG-At*hrHb1Jv98xnNxtQp-QbJourxVR!fC=Y<0wdTrMz9xy*seC7 z0VAAa9iO+ZHI;m*wl$9dE}Fp;|4}J2K^bQ8^OHN}0Dn2*zHPjXL4j%0r*l11ayli0 zs~ME?MrLj+e%*BQ`(1L4VrJ?~D<*Y)pi8D`%56ge%4A1rRGsHw1eOtEd7rLOLb!cxJ~%l{e1eVd2)}vx-R(OCpG_Rm3ZrCJ>B#n zUWq=LZdp?XrjAaFP9Ef&5Zo*wU|?8CzkVTM0|OG81t<6pN{&t&ojPzzmRqJzqF0FC zt>otc&9SU;uAG zFY~>5crPwU3{*&9B)~K-Lqr0JL)V#}OQF#OrL#UTmu<@o7a(x}JyYHZoKA|0Oo->9 z4a6tF?K300-kvphaMtZzM^0VcE5B>c)wH71eU#If;7vEDwq)Hq|%|Y z=yXrBC!fu#3J9pmdiKeXyF1_6c1~gIE{R?9=6Aa9`+JLv@BRM1PV+PSBzDPJxGHn< zy`9$v&s~}27Px$@m)F?kfo@qV=LWCseDCDURSSK(cn`R(ZKt;KpAT=@vXXkh<$&9~ zyRiOnJK$u4&I9#g7>Oh8aXrvPvWaY0erL>4JMz&AJ{TH^st;+Zf)9ocYK@6VO9z-m zMaTO_B4RpmDr|I2Ewa82V8CGJ8z}$`6blYJF6haC>Y&qVOR*b_SBxZP7_lAo3~Z=x z0bm`WKa7uKLuaiY#)%ZZ*}ypi2hMpUFvAeo!4RAn7Y>f|!a&&)91)ku91X|krmrU# zzB6WT$H~vhzdZ2MgY@;M7Y+^&ix@hhu=}it(3#x}M+}V!3m?4jG@VQ{#!fOc3!A)J z?-d$dI$YAhO9R?% zObO2#=%Z79KN9ev+a*m0qy*x3msFBTI*~58N?WtIp>pCFPLxa0K%ydv5h-tTO`{AX z63pEUV+?PMF$Tt^XT*qUF@ap+fR0%M2WE8~z;zioXV4(HFioRJXg1BEugSN_$K)!x z^HR>6&Y^QTPxB>tg}l=IEArTx=J9JId)GkV0qAw&kPh$))ibO3c&*)Hm&zhJY3w70ISXbE&d}U*fZ& zs#`*#KGiJ-Y24&uScu*l{jH^N>F2AvG^vqk;>G4|Irb z-8>{cF(xhYDrHbx#}e@ZD>V+s5Re|4&U6t{23+&dfL~AF?kvy)gak409(C*TYVw#Sp}WwQ6<2eENI&J*#Zm zea|Hk(b_hANC-)Q@mr>fp?XT{V1H-=YD2LxAvzi=R$UY8Uz%{}WvzW-_19mXI=04A zMHU50yQ)*J6kNUKP%gfa{hpK3B{reIb1d3#jqKl)Z^X9!dIs2u1Fo#Kl3|D|#Xw0? z{GmTfOM#{yM$_xosfZs2ad-m*C}D!5IVi7V#aVXGot;~^flg`NQW{3r(a@y}GTy7V zenmt7krDB+AqKA~N;xMwjg_xu(o_*F8t$b0Ee$lR<_imE6WwHuoRL!pq|ts_okH1)=`#&c0)? zNf{DiO)1|mQ9nNRauzL|YH=hc}Lwz@BkE#Zm^@Jm*?j;gPAg-vvO%^A9V>PeM9 zSvK9@V5RXZm%^WUr^*nQ*_i%F(Wz{H2l=$o5iSfAxIX;rrhA$)JfO3dF6CA#NuSes)C2Y6-vFK@x2HVZ?jafM0n16LG)Js^)Qk*5P!5#)7iQl797LpBJBOshP{WkNzwRMF*Ov~f`3y*3`NyWfhTr)>TL1L){%LYoD9zIs zXZ&~i^#9I~U$h6(BMkz{7Dt*ELLB)uR_{OyNNofVg zGEJpTse+vg=!OOK)y6elM|npex)|T}v=cX)LHTIy^hGw9Nze{uROWKor7oU3F`9ah zHjikq(Fotlze3cKUEZA#%Q{OA^$qaEzNKy^G{-)syI!&)&w7lZ@cdhu3w zGUlCIS9hj-cD8Kpy!uwt-iF(d<1CCE+o|6@4-ISEcGyGr^y@@p8mLRjMsG($Z^wFy ze)U^8bw?d86;ztsym>YUhRv2voO^s;3ovXr&uG)oxS$B>lp6xsK%Abwp^a-$v3QAcKkQ8!{q<4Ee6-8DShXU zw#DF%Hr_;cGEdq;okwiUmy0-17%^Dps2Eo0CVsI1ef}$yo(_2j%HPpFe-;BY7~pd_O~Wwt+9WRsz#G*m|{i2@(@T zr;@=LQCFoSma>^mxpf^W$lf>^D#tZJ7~);i&(8SVzU1`6nHguz|7~pfYw=9<$zQ~3YZH;HWW zw1ZxqdBzx$O8Q@+x3pE)btKA`ThxAZ%B5_Tg&Nm|ezb?C*Z0&BDZi&%R^LeN6I5j1 ztZqwP=vjGRO}(3{?B&N7tsFPNJ2xXn{r;5eHE`TY7ST=~2Gk#HTN_@#N@WWx*aTrDwC*N-#}_8}qFw`2z-hUg zY7NvWzqd{O`hjliM@EndWGb0QiphgyHQ7KmldT{N+@zpv_@rvtL@cRwrZ^zR7@uH_ zNdt%{#H0br@zyBmjDh~TfEeh!SQNO8Nwb?qwu4f720Wygjj}HyLEHBNacDqbP#Rlh z7LcA12Q)A!PSUY!pn*ZchB>{4Oq$WZ&)srHEk1HJ;njF)f=$a0kIN6A_Hc*%)~%zW z^P{6$x6beI@bs|!xbXb+y7LvYqJx5?BAN%rn72g6#6(iJyZiK?F=WsdrR#>tIv=n8;?WsCRT!Y=qE!;MBQ2`_GtR`VnRR9m=0(Xw~v~ z$wAt&ZA*Fj@bvDndD)wRLxGwna~r52AA{Sx*lroa>DpFpik<9wClA#O!29U4co5&`qbv;@}VZ;+|Q;LlZV;d8BbgdQ!2jDt~)(o@-uNw4u*H))$z7;}Z= z$ko*L+OKVU3(L*Tu^Z+7aBUZ{)!J-2kfds}Y3q#}X#wzw8_sOla7KQ;N#CeOuy;4` z9UG_Y32`>okHZu08qn_6Qr0&q+JIh{f9O5Ackjujmm6*c^=We1pQX^7KGR?!ZND2C zaMw%>p1;z~=DU%#Kv(tc$Q*{X$PKxM-;dfVbvv-hpOBzlV=USFG{mVgqY*)-kah4R zUMY2?>c>IB#kdU7DvY$YG=VdwvakLmk_HBa(*OhSO~G7Iej3q_O%t;g?nAw47zN8E zGJ!pVUVzylZP`+KU)F(y(YV0K4CN*KB`frlzEQ_^|FB5d(})2Bn3T*t2Mm}yaG?A* z6Crm$%F}clrE7k&$I##hC+2i~f$F#)sq{j}oQV$x5ACrueo5GUTtZfy>-*S<>6sU)Z)l5{X}`@%jLQqn&aLSa9@(!ZH#;;hE^*dx(_&hL z%D-I9oE{PT{ipG9QNuglIW*cYf1Xcihx89+(W~aH8a;kR@#K+f zk~HJ8L^B8FXX_Y(Myx;64-Gf^<`b5!y?y+O72}z^eeJRds+HJZwdk5Tm~!S8SSwt7 zL#@HxD!*Q2D7gc)-vnq2Gszq>A6JBHy3EL|^?)E|jkD8BRA)?qe+e02Wk>1)GT37$GE}cETbrKRjNN@>BDb zzuWt6cvc?w?1sL#s{yI`k`xz_?_^xdVbAK9PYwC`%ToFFsm)A(=jVqsOKs2BPF-wY zC700O5?kCQxXEpn;UCvQ{)ifKXG~f!X3T;~GjipNw59pD@{E4qCQNLRD0|XHt9RIo zxS7%m7jPZS$EnXt?aq%EqG`0;1CVV&a@!S^K0$TA%KJ&;@_}B`^5v7dfczm1!ADi|gG4BUCqaqI_xO zMCv)x!N0s1Wy0q-;d_tcyjW{oqrvR5pbTc0CDb=JB53lliOa1YJ!{tJS$8vfx7@nn z3Bp2bpfud(HNJ&*1wk)fc{(IiX@mtfZxFlnQ|{_1v!s!$0Gc!*qJ7M9dDV`)jqDXY z$-e)`sx!Lw)_q!3KngfbW3pd>q)~xUk#XsMI%-VtrJP~{^FdMD>wI&XO1J-uZm+S} z>b6Wi-1HSc*mO@7rIe%oZv}o?bLOi+@uQH#igkN9^t_PB{p3)HgKYWFcbaZmN`vLG zYd=0gja%d@n!QE-4}F<(N6w!=B3qt-7MBIKf4q*3Y{SSvvWh%Gc94DKRdN(+N!?DF zf$J76$YtMjDXsafs6y0^Iap07KkP0qcm zQ=foa0tTi!*z5MMgV?5fxnsGSC_9FdRuH>H2bK%l5M2q^U@>pqWh20R8!#?J}rtsO;}sVI|ZqXDKn z$T4&@Z}sbAbL8W5HeG5JDh9Z_bHTSROEjh=CWYz^8n(9Wqd)H7IsveC3b19+hbASa z8rnWM&~%((ble0Lqf&Uf{0qZqb~Lx4e4c4xTt=tV5&8*2fu#5Kj1+?7y#aA|O!{*2 zDD%VFhWJ20oWCSY6edf;h}7)#*u+#{@8HBaum8*Z`X{f?Y1P~i%Y74=)Fs(}83Wu& z>!kv?#Ml-9xKsdKH~&s~srJMOkVj+o0I(;_=%Sz@ynokF#9 zdR$_vF^un}%a>e$U~024V`^etdUi^yiQ_aNj+)tK2CZ@#g!X+|D>9mFCfmtga*UjA zs4v4u;WQaxcOyGCG|Sa3>KV0r)74Gs3F*qFb=$q^SMJ(o-hFRwZrbZVy_Vb~Yp!Y0 zKhn?9ug2ffX_PLhPgILrI_S;H{`COPqVI4^Tx{QV`s6kpZyCSMvw7QA$_Dm&I=hJx zZe9EI?ds0;yP=(4S+~)*b?h4K5f#+4b)=V<)Go@WO;}KrXR}+nw2B{nAMYQ~%+rHU z!}Th*=MnTGMPw7%b)~Zi;;#F#0#rSIMO})o9JmvgtSn|@Pt-MTsp(fbfPg!ABTp3I zzIM-Q)3y^^=--~pYsVJ{L|q&9!QSuY zK9Pc27x=6D$#}{Z0L=bhIFy3_&&h{dgwBpm+b5fG+uHQ$XJ^PcH{kMTx4-a;b_FVuuVVK(d0vs;e|r1;iFpezwaf zIZe0nQ?CU`IGvjcro#DhMwy?8?6j9MqqKXyX&mJ7QP~C&KY534<8c44q#AnQsR(8;;$;#<> z??c1ewi*7=z5R0NC#Ws)+$Tr;+)1{OXUL1t>l`AlUt<(q!=47B>Efexap{pkn1|Ii zW8Gw&sEfNcIJ#b)P4{k9-Nu9u4wqN&EAQ!a zd-3flI-khC57Z8m-z}7Y^( zE9^(#*IO;{wd-71mqU2A4kCdD>013GJ$D*4LG2;od0 ziQbl$;>T!fKAq@x**2p6i zsNV8=2V+Ku;Z%9(HTd@4yMvS%me-XSBu|TBgc!}7z7A;z4|eiWo^cEv!;KNgNHgh7 zZl*X>($i5iB_JjaoP5VyZ^`rDdQ1HHt+(D{&l(+ycj>d86 zTsLkgH<{kWx%m(u8bKmxJJOCyqZp5TjGXbxH;;;c$bT{3O#4C3y~H0$7@3E-ZGZ)TWFlNFZ<2V~`l6`|Rjo^|re#4R9 zaQJ7>Z#eQB&YolVUV}$Ob8Zw(z(Y2}Xbesgu+B3jIX#D_;BmNSQ)aUW&)61=?iw1K zlav`0?GxEz5qH<%=#FA$l($E68|lt_3?boOo+&M*f_n`hYfq5%3Y7KoJR{|Jj_^F! zh0tp&>sAtxXdv;Wu_TtJ(Oc*cGK7|qGWsHUk$QvFd5}5}Qs+_XelfiH&8kPgV^XJj zl>58FFP8S=U(lP~o98YNk-MxDI7w$XQ>BQus#c;p~Y|&G|!zED7mcTMQY`(Dp}>N z_ii`Vu-qB(zy@^ntU}A+iDV$Yyg`a2(R`%DSmjfKGE#W+R^;>p;TP(@XOH{`S^?h3r8oSuFO@fz%9}m6?QMKe6pk;^6hwB00&J55dw*Hk0}MYV zddm~UPXWW-50G~_0lGcGfNY()VBg<40#oa-9D&UGCi7#bPKlqs4Snl(P``Vyjp&G9 z9teQf=^=+x*rh_bSueq}p5kxlDORYx1^dnq@AiXto2%~<2J9#XZe7)*-*9>$T1-GW zWy+dtfPXw8X~4h+_=6CR1=H0S4rye-lLT;=H*C1PVS^fnSK>e{W&I)XgBU?-%taeE zEW*fi^@aj#e2ZjF6XLVDeva`A*c%!T7D?p|cnC;gAGj3`F_QA_&OS{aB~=zrr~1h7 zW$RnYtCSR4F6jQlJwf7`UCE9(48U1VNhg3G%g1M=D8C&Ms~$X?5-9zrTW)UlggM=B z4SxJb+5AD(Liqrtc@>@Cnz)e)hu>V#F|5Lm{&l)zT1C%6U5e7O;_syT2S?tqY|$;z zTt?Qk)O$N+^ag${mJ5*QQf`<*^6#kKbNAzYHkP~4^0a;=Zv@L1jHx(aDJs^6rKse% z4D~!~o28F|DNzAY(Fw{Kxyr9xU~FmL#Od-6@qZUz#*yqUfC(-6A+J$4_e6KDKpmHchyTN~{>O`$nV-A&Cp;N5nqfJ1BY3 zhPd$6lWD~lo$vDx>7LNcy;-)OZ-*}Z2*=99=kgyzZ6ql+Ujpu{(&0}nsAu`I-x8=( z2sTKJ;)b^D5|NnNq6N)p(W-~}h5ruT*greMCwFXNzj6AY4gLCz=rX2lP`_Rar#&Jc z;hMGX+cBjXrL9_~+#26ZJ`m(NDk(XG5UbQSSf#C&t6C!y% ziNbZVTDEHaD@WDaN>^tUWRP|MaXdHSK(Ia_EH+{7;*XcT^2)N07q3kSiw)2Ry%OFz zH`m9vL$G^rM1F2;GmoH5Kko9a82>ZK(iVCR5*MG~P}4zJ&oQ{FDM9&WprIlo-7np~?t=n_ ziY{&EXRei6tZjMQ%nsv|{iWsttLLOPIS*`k@oo9xJGyqN=oFGorIj1bP89{HOrUG$1+J?)j8=1+I^OCI(})`zs>zHX278%nvu4=#FU%#_FbWEJL*qa*IS zt#?c__mHgcX4#1y{n>AQE0|^&Fi3&#X!lI+aQ|*?8{mI1#0P@?WzYpyk@NgOtu0{q zsoHS0KiW?Z;JO16$9}9s`Gti}Y=aH7+*Gy$iDrj}4(!0(eYtrRxp{fH6?x}cgobr! z*(x-oLrFy*{8i-T=2|SIP+qP34!ednD~0Ax(y6Aa`Tb7PQNxvVgxzX734v8yuF#y7n|@E4p?o_DBZWR{ zdLTu*+R}mHf%8(*l{>-vebjW>^Ubx-nO+l9_|dx7OzXIT^~aAkJ;{%j*2`Nq&~Z=& zpn9I#LRaZ-G|IlMwVTT>(~ zx*YW3m@%7^+V2t;)f6#)Kyz^s!Wh7JGK@bwo)`7xkR)nz zk6&b3Y7|=>25&)M!N)`^^KMb{d(``A#l9oHX#*qo-OCFLCdK>8LqB_47*kXJ_{`if z)R59SDF|>(*GS{}AM`1P1Tu@f#^r$IUl9(0iLE>v3(r!OXT+jB<8D`<-J!e}cogE_ zYS1a~vw4g>Gw?DA9I8w$@@xfa1QeBb81+m!d{TzCfMs`rbjQ1(&Zq6Q<#_L*iFlK0L!XYMSGLm$^3YL7Lo3_1RE(HXNS4uE-jn&BSL# z(op_)SP}sp4;2FlTmO-b#ojsEb^t>&frpJT@mRqIihInod z>j$_BuvAAV_9soGiL9L(*(#+(`3!R`7~cDu?+b)cx00^h3BuQ)Y>xsTnUX*BH<|k+ zPLF-eg(?`g4C=kxFkr;6SBM1TmErBlUb0bIs%v-Qo1{Fi+D_-9mxSGpzaql;w4)V$ zCV52edrI=JDSUM7=GQ-jGCcx1;STN>$P;YR7}t#xKe*>dn$UrLpp!PiVgaev?Un$7tULLO;ji z>PaBz02ue+uf2&e8EAI;MZvv9(@vJ2j!Em0+*>|(&cFSnq;_FH(te+}EVwgJ@U1z$ zZ?I2Nk4ptf?H?6()~tknn#u74`5x{r;4OjMZ3zSJB*r7~d_-PO=iBgnh7UuYFOq-J zV?vF>v!6N^x%dJ6(GO)IMrL)e5hDHp`1T;J^8($u^>m4wupT=7P=OD1*L#GzxqBMU zBwt82n1DdveK6whw2S-gF_umsYjySVkD8=uSC z6oq)An`s-LyL~(Idt7*n@1Xw`@Gu*4hcSmZzc$=$2!zjZ2tNq%e}HhfrcuK32CyNe9zkSR1bYuab@yuHv>I$V?>7^Sp$?+>1oe z3A~;PlEGv$RWT`DNK#bW(TcO;*~^F5;(X=>^*tR4&-0~wQJXkU6l9fd@WyYu<#<$!P|nsN$l+lO1>?r@}@i+UWC^G2MpuS z@M|I80Ma4PDkrcW5(rmgx7KPLa12GCL(F!5)ulYIFV z_Q>oOri97=KKA_LwaWO%%1<-WInNjz0{nP;=!1j+8fxh3)!a~pOa&wbln3ymf>frw zbme}Yj4AJ+@@AgQ1af37Isv2x!x3l9?dd1?`gx)=_QKXKe*Rb;{-SE-#l+>O_o1Qg zT>}DD-h7gL%6(8^7ZiDU`SIn(mHKi&M|trILk1GV*t4>v@dDWn2i9sC+N^RT-zWb& z3~|Hu8u9bQkBK`;&GQoVoV%w^(ueW_=V3Tkm29d?K38S*%>+I?MNZH2RN|MoFQp7g zIOE!q8fi)h1-mecpJ)DD{=V|%mn-G(>14hY_o6(CK4l(Yo}}Uv^YJ9}mK_m2sxNami&%@0_(1nUZC?~js<~xHOz2t-ZRT}c)|zaLXwN;E#TG=(KKQ!qs} zL5DJfP7$O~jtZ>E*(!rVx%8BdD_68jQVP^7!%<4WLEhW+EB_|&)_W}o+qS$mX$b;l zY&lIU#+sHtf6hr-SVkR*%yWZ|I8>0J8^@$r0i|;Clu*vG2AxDPm8djUI!tJmX%$Ne z_3SK2=ZyFj{xVutp0{sQ*N{+8LnsXhmAXbk#h%-f2Lm$`c%F2W+QSB~r-tzLZjTrl zr_iNjUr35Fvi)GGooHk@`^+rqj8Or^Kb$6a!Uee!Ck*U$cS*@N)bqQdqS?I%a>1s| z+c#G{F=E6M6`Of)kI44Vz483GanHZ;T>D55bIDp^*UT{;I*ehYcHW8c$#xiY0u2s*(!l_Z?)U)||DIjva_aj7PvPf2Vjl*L)9T~Rc_7E3b6U+tM z^DGara?E;!1@=tSG8>K+e*4$Tm5J5cH#&c5ol1fMY(O-d8m1sZ&iHFFSMp!JQ_U1%J-?Z{Pk3yL>94g~eOc3vKEOlLp57kN z6`!eUM7o!s5XaX|S6HH^8=L3Gc=i-9<#Voc%*}M*7~6rgPy7XUEoJ2S_(mAPCi2&F z-XVIouHmeQ1Eqb&bPlySFVgZbpWt$LnH?WgW!YFIH6n_|3@()ZA z+se0W{_D{0m*|8$R&e*cV~QNrp?ccgcW|Gx%^V-nA>U5ewEqM&Z+_N^qEQ_-RTrt{ zMZN+6M;-GFzEO;?K;SD3_zFNI*>L8~IE(OU4xAAqLs7EETbvW#K&98q-QOA9j|zX# zRX8vRy`z;wt**bXm7SgF{K9KlJY_FCQf{o3U0wdJz};oB9_CobX3HDeyZm|_BP8Z| zxO?e%KhZ6e3NTtTWt*~5XdYs@jzDMmqPtR=hI7mUhE76tN4X+7jlLzPaiQYbwQ{>P z=Dk*%7}NG5NqL^0K5n9)&I3#v>dj1AEp<;_xf_wng%>$bwPR=L$E4Zj;D5F@3$S|~ z^T^lu2SbBpp{huh1rw=t!1DlZ?(;AWFzQ(iQvaco`!Rf zvPtRdK`zjF>TG2brRoy~Ax^LIU38ZFVhw$7t<8ABRyKmWuf+KYdM2CN)IG&=o&fhR zdUAHMvCYAs3$sG`Z>}6xkfP3AXSet>GK2iEc zVI`#PPJ&3QJkP*pA-YgMZ!XkR2xibZqbL|RTJGbugbytDFn}EimNUbxx&RNYA7yDC z$Z4~DnkEiRO-#%&fBXs^GHLO!{vUvmv2RrW`xf;aZH^Ytnl~>U{rMj}?yqaU(s~or+$|Ye5=j(+6L>^)kb4JVBh9&=Zw5(-=l^;NamUS&d zRvz>ygJw(yAs~VP0~hKocxo(MP-I~AS>nZ)d$g-716x+47+WcLsJsjtHq}-R8aKO^ zmT2u)_#5Y$^YT1=0|Yl?s7NHi-*D;Np3#Jk$^?U_3hEgwe#yODw?yrbGmV*r~uJV*^eF-z-%06IKi>T46U$P&NF1e`9;KrrE(Aj!}33mPj~4 zKeZ=x(;2s&8)kp>(*D|{ip`3KF!hOe~yFAUlSTkwOzUu?Vb*~G}iIFrXF{FK-w;?XnJJdHgG$aaCRV*_; z)Zq|RZ@GJTxnO7>qqKLnlmnDisxRAoq%H+!a#Obc8>5s9P^U*PRWF*C7PsMp_wQJC zR-UzO#FE8SHuu;zV(L07(_fw;mfmgJyg%%LiDnr5EG&HBjrH<$I=*P}v+w`P)*di9 zAdh||l*ExVu#gf2L#TiA(6AWRC&immy98?Xv!w5e6o(IVNU(eUWwJU z^mbQxmHurj&p2RJ5ht)3tFd}Pk*8;Pxx_^`W5!6meDYW3^5B(tjIYb0s(a6&er$ub zLxcy6rfCH4Z8*pDx?;|`L*L5lq$OxMn3z&im9M7T=`wjA?Oj28gSVMqvX&l|bJv=E zYx@Pv!v|#G(vej^RX&p%!tb~@3hItnhokiCNpUmpXniKt=nN3pm<8haUpb+|+6LS_>%% za?UF(_gCn#3ff2BizS6Js-m?PS+UE9VV@gBy5#x#HuH{vVY9!xJ}{J%A_Nkwmb;c4 zAD;jwXD^+{5@Qfm+J%)L8*y8?VLYm0ujR+QQ_j)EqOpTKsys1$ZB*nF{ z^AF{9Q0sxVEV1hFHu$mn@b=U%2~ZUk(q%6$4fvD@^8Llisgo|*&?(_xZbs6N}TiXVD^aQ zB?zJJZmdn)%oydl>C1(uI5$!0ATO!5wwkp6J8IhM6quSgXPr+``SlP)#;)D0(E&F| znAd6iDkiqb#KNYH_%}_zVzO&Bei>dxf2a@k+ZMO%)wzoTD8i~LY}sAtdNAA8>&p3d z7uY0C??J=zd^w{;IbsA|!WnsL6hM3G3>OR+fanbuhSMmj0~Zy*SDWY1ZnNbip;Vqo ze-yja-2b{ZRj}vFVWq_d0lD#$dzZfQhwHet~uEScbGRb9GIi| zSzJNM>V=QozK~M$zO|};vho>4vh$3QF~DcD2omZKeEJH8Xl2Z7<C^xW{D^J*u`X#nv8xIyE`Z+uJArh2wzep>OkKk#|%3I5diQ8SvskS`!`PAlO zn@MX$r_O}B{Q~PYjHKjwheim&5rNG^J*dtY5^gY^I#WAXZw3+z;sAspy4G#9A zmF03!soD-TZDNC-qe=1^9PrWU@{TEsaJZMuGzS;O{mJ!Khkb5bfimWUdX?L$`c>sC zg3T#GOKu(!92)9Hb$%h93~)A_d4+(Gn{nkqOTxU$Bdn8NcDyl(T!A}z2;b~V{H>+$ z*)eGCXWeUM7h%g{xRpg#N1j#=z3P!&UH-1jT|K;+H`~~j+INNsDU?KjB0Fa?p(%2J zO6B|#9h)L$AH-47Tg^$nA2aa8E^F7;3~;a`JxEJ7Pb5X?L%9f4x>|~$bop}V*WJps zuk5NpQ)@da>8=%C)Do_>8Iey9T?DA|2$3mVmh35}aKSuT!YiZIWUEb5YbLTZF-1~G z-{!rncjr;vGVVa@h)X06Ri37Fs8Qr7Vaf(HE$CZbuv0p5(0Ab1Grn3rC?7P_)8Ele z%hw8pHTSQrN7r_F+0Bz_S{qHL7nDqGa@Db1^?DuXIgY7%$6Q7AtDTasyk|MxRGYJ^ zW$krr-plTKredvSm6iyOWpyoAyF5?VX4%^2ThUoO1)r$jC2%b=`|&U%J3kOVPy{&p z^m9ws8NCL|`#64B*Sm|0@9s6o?h6nt^@wQyO!c6l?IJvWTPrW{3QvBf`kD5T9>1>T zqi2rp&|$RgcNNA1JCBn9$kJToLj6#3Wj5CS<{BH;?>nk2uEdA4&oyERN9}n^Z zdmd`_9a^l=&S@xWJG8JbC?6ELa&ZY-te326E=p5z+@UjK7x@kPj?H{3ria$GyBD+A zg-}VeuGJY&5wwl9q1))1D62k$bfHmN6Ry=`s%6cGDq2jjteMGhK*B^dK5LWI64cUb zU0ZJ9JL`92w@^jRmhZ2p-#>Q+c}%%!0Mf zxhuF=^73Ii&xct+ZjhG_Moi2Cs?E)lfLT)R3Ei$YW@nS1V)$8eM5EL$OEB*2^W>-1 zme0o~OK&a93rhLa939GM&Cf13hs^BzI1dsJ<9b6}i>|uRh~_b&L0&Y}w`+p(Mcj*y zV&mvNc@f%|W-noVjF32T@Vm zN7=M|)BU!cB`vk7S?Hjs%acl}>HmNRb8|x4A~PG{?1*+qqJyP(16K;4>1$R%$?>KWWf0U-YuZDRPKI z`4bRllwBPAbl@4r8RFQC&gAP*IW2@7EK83}DA4L7v1)$__(%WN4v7Zn|!kcP|ZDPMleOLLDNuUNQn z{jLgGzC3p4fB{Y}$Q29TshHq8FtLXFcR{L=APeX#(+fr$f>OQx80?+5MT|MNo@RdXO zb_hQ~E{pzJxU$Bbi^n}&!(>lojk{fV6`v~ia28JXk`~UNhV{|(AsCUG>pr33$Wc`L5b-zvGYy<+|wmFK(;_li~VPiW6|8TfpY zv*$|s+%IbSy1+NZc@_!Z^OW2%e4`T1M{41^3=H378?K~-d#)5dtA($SPrLN+xx!~P z_n`9JHeGza$=P$3zT21FxA1%m=KF>?&szRu3@=l{p_a6A3m9H*8?K~-`6%gBLv2JV zdncr13@@|pB~!z70*05{hLhD0zEkpt@Mn~8zF6C1D4xOaXO(bnp%yM}!|>;9!^vEz z_dU3W?FBXcL~U;y|Cf{p;V)|8+TJ<-BF5is8z0KGmF?>_#0S2u>}}+ysB$=idnM!9 zUP%^CpHueo$!BoSWIWq5SsSjT!}h*mIt*{W1Nt1&gZ81MhpkJv-!WYXQPO44Uj_8p zq;G!Cj?Xu_UzBvspV;yFCfli_gxm3{hAVqn1q$J(75)XvPto>Xz5hbPW%tJ=lfZGq2$j_OO8v9P0yjJ330JG zsI+MmJE1BlFh~pxv+f6vPmqL|sOW@PqqfU7MfjtFPH8{iG+chd!>^p%O~;rfj`ndA zq!;*;f3@=oY&&9PrpF+8>XWkP>kr8Lb8&b0unkj1w<*4lWE|E>oyL!$kDGtUh;ffe z3)v9=SJyj?VnuRNW?}p|>cO^I-`^!#9cxL&5H<(Jm5a9GC6G7U4GXN%Gp z(ZOTPvlSD=f)^WE?n16Z?p;S4#ENz;Zd3YE%d@(VvHgW&y`2@i@x^LAzl-5VlyK;k z)o@`khQDqbPF7n^Nbh6#VFgFrFJd=qI(J*ssUpY4bJle3wx*+olhx+u?9zEt>$jjC z*z)rxIc{wSw*08!O1X5cAw05fxiCDcZn-c#+OAyC?(Nd4?MKhprSpcy543aJbl$M# zN1tj<2ilXgP2&f{m2|2}Z!KI{jN#F?;p*PEEf8L*w(rS0y}HNwMGQZtwqvS=a|bcJ z$~Ig{2h*=q`T0T1m-E5!V`{#Ot>FhTyvjD5tTvsOVo?5-YJJ6TnSKPavpzKb!-NUZQ9ruRUK0jsq z9MXTmY5Hfmc+(3ud(R!yciemKn7+36d@b~st;{0 zx!c@7`{d`#qkXb}ClTyW975j7{b-No|M{Wm1+Tl^h7fjwBvDTj0jirOhY{lS)t?_; z9^iGi8gBgyIw!nMCg9L=JGd2qx-^=`zd+uQ_L41P5ZSJKjLed9$PzAvyunA1-Qczf zgyg{Uk0JgR?rTy2{-Cb3k^^BT@JF(;FrLAG6Z0pQ3sA1@!uMnWyn9fXKxTnI zOSnL0aqp3K>{|3C2f0jgl*_byDr{A*b#IY_EL`{&;~!-4_+D_|n#|y1NCrH6K{y2R zT0w?_-;rGlDP))!L|`IFS7+l)DoL<Uu?jSFayECWz6#NNFJ=i*^ zgEv9`tHJ*q+$EI1S`Us6>-SsIgVlwtV|9Ub&3q^;*1e+-Wk)R3<0D3)&awOqBMh$> z8ul5U)%TqHfOXN=@~v(#_^Ze~kn=ZC&JRG=JovxD{qNv^1NXZ@4jZst03L-3NdIoY zD6|oVQ*0-IRdjRJIEufF`8-kY4}rfJ((Oh#R*y`Uj=oe#-nL%%K^)F<^!2OAY<)W@ zC$vG<4phI;de7P=w2k_F)@E6|ar6;0tlnJoS$oGe$1rxNw%udfbMV#n9Vvck*@%4) zYsZV&*En$HP#;=dLmf*GS>qtKpgxPB>~n>mpkI6pWd5FIG1lSzM6de-`iL{wR@}uu zu^wIlxw|udpk3_|P0)|2vefk>cR_mh=r%%o@q=_TARmA7irSam4YDb~cDGypRgnt` z*5o67Ms`6uyQMJFPppFYzd>351(?>#Ihd4#8!42LiEuv)`{%)A6y68Gb0{yv4}THd zPU6pvA}2h?kQ43&0?!*S+D{v(RtMCMR?dE{z2lsci)NfK1DI4Fj&$5w-`1 z_Qv`f*5)1CgMwqrkB)d_WrK1IV_3K2S$$8>^ut_5M8`f(i{e)x)4kZQ%o4r=U#mL@e(Gy?ny=xV zKSdst4wHlYdnAL&MrR_km=ot)%#epC;Mon@y*tF;gM2|=pg(Wr!Eyn7y93{zr~_)t zkNt_1r`E?R;tu8XhWGz~{5-&pcmcx|9e7Zx?+JW%BE{h52xs8>jH0)>-IkA;<6i>VsqIbG zqd@~`4h$kQ9b--C43 zxcV@_?LFX{1OMBgjekipq%3eJpr3jg%A5`PN04;p#9nMABa|nb%;npYxpac%N6web zg*M!SyMy%L^(2zT<7!Ae$g3P|yK=AxUI4cTTopGL;xhNU;=oSuP#ol81!enL#o5n`SN{!wsy!F^0f4cO8q7!{hgg8vct z8Q`<9OW@vs`$OPg1UE{F$DAAi;j0yAnO~c(ITjp@Ok}XHWq8N@05}iT#j5^&;Ow1sTf5UxX*gdKM;zkk_GYM`EAK`l}ISie_J8yaVJ2+Kpgi3-d@X z;T|#ta2ffV>2f6G_n}(hiEnu z`s(;V>IHKDQW?iF-KUJ(h{W`W{&g}~KT?S!zM#~daGu1VF4V?Uu z3o#00WK!!I-h=pq86O%Zto6?9HCFE|&9BLPtoL*XUr1imKMZNT4)LES**YI3ABaCg z{}lNEblNf;cl-zH>Hx?f70S8{>J`ebOC#Nw&SKa`e4hnBjP#M*!0)Jz|2nF=k6|9t zM;-AIqy^(X@ooq|NH*vOf}UCq@t!4}qyZ4d@+pA&VfOcF&_k-8gt}?R@@LObCn@93 zOQ_2`kUqL3NFxK{oK^W@ScLqo_1=nvi(^Q*?m;M*3_8*c+DSf1aqAA{=b_yyIGUo* z09kAToe~81gUIdDCotyYNwU?h$bz93;TwirVoT z;)Ks{6-gNW9zMcd95nzYapRLdO1Km>M5B7zR<};jIdCf)Mj!0?H&PI{8 z8c&Et7^7)v>6$|wB(wU3uzKua8~bmrtzSnjsy(dr!HGvZ=uDRBz9w_9KL>kJ8|P^_&_50F zJCQzE-+iFm!=U{4fFGsIIY>G(3fu_1ZUbQvRb?JD_z&SP=*l6lfyWP}t4@rGFQDiF5;Rvv=;-=JRl zLYfO9p10Dzq=95Q+Dl-I(es3G-w=_0Z?W*5h#vIh2&j9-{=Eh2sUO<3Xk!cEicKv3 zpgv=|D-r7EBWOQ0c#rQ1pOML;AH>mc!FY({tvHlsVsLs&qji%Dww zZ0vke&DTg~@b^KwCvhIBC17HPGz(;LKcvOx@V+Jmz;!+t5IflCXT`C5`ljl}D^B~P z?bz8*EROOn9S`m0J>aGpJbZ&)^UK(LBpojf2mZ^+Fuo7i#CHImv!IM^!M&ke1HZ4( zlh9wY=N-YVgz)|lJ_E*r5RXrV`}Qz?=D-Je2^MezAl?zU-v!sj;O_v}h4}MT5Puw5 z#yw4z@q-|Z7T}sGTtQux=uVRoZaw)Fcr@W$S}s}3A0tmeU%U_6>{R|U%MRvCw~#`d z6I@0Lh4y3x^O+M{kta0AuO^Go!8^>kRgpq;I~Av!Kvpv+R73j)#|^Vw(Dx>V(1%Qc zetNZd8lGK(`aDn8vOHKCEMMk;zjO6Cwgdv~M6wBF+h1|y9ANA>p%1M97YK432(Ayf z7r`wBHw0X^>I%S>aF5~~@g89$xs8>J@dRm|;D(a>w6fOcY-Ql+tTMThQ{}~*EIWi8 za9=6DHQZK~4)SDjWHNN-P_E!~E#ZDT#0Q_rS##{(nPc@}=b%37xD61_%4btYtj?Us zocWW%owk*^&3w8u_o3>Zz&Sk_WAg>r2csQ;Hp%OXO(H!B&z6v*;BvrLWwy#u?roBz z+X-REL1*Tx?-206fV6Tz54{EBWq8KISUM~WU0ZPM{<%jlh_NbO8*oqfKG_KyFv= znNJ@B|14KXjxz^+OaXJ;*Om*w^KQ_Gh2lK2LR>Py~&@EKr_ zj1g`H`|ef~@K%#&?@ThdXIUI@q0rwh;R(49`iJ}Y7c3tLW64PV7tj?2WG&b-FdnN} z46YNr(~rdm|1qquNHQMXC=v+#jz?EchGTgPKo?9Vlk{0+F>{hk=82y}-#Z=p)m>yd z=yPV5-wJvoTX!p&&zA!Zeg}PV7;V*g(1#UDA3~fwk}SHBTXntRoj(Cnf2iR<17=Qw zZgVF^5I!C9o(Jz2f_|JYnc?~Z#5F-20=%3e+0s!+AKHpo2sS_!T)z(Q{6KCM3{Y3G z;GO|}wgP;1-y9qzEv1R-vj8$eUkrX*bcIqcH6A>Z?oh&Dj5q>(cj+;k$*z>;-#wFFH1E z*agoWeBB|i+rY-seD;odeXr)T_c>3nGll_X$CEqIg~2s*ajJii^xy-?au(0}44l3K z^5_b#9Mbv^xwp=@ma`D%#4-M`JkI&Ow?3b}D;UXgx|}R`{O%%t1kdf=eCBj_K$%0y zo;vj8FKc6hui4YeY;P75u1f;10yHp4K*Sc;t4#Oli#%l#OMG5#z z!D+r0Uf=T)$g?xZwlnDe#*J)G!!(osi-|#(#ky z3iq0?h1d7|FUThl@_;&IzH}O}a2ohgoQHaUuWdMvZM&0u_46SOcCY%(32#F>Wsu(6 zb<*nAP+IyNB`x%|aLwPYhO0hHAF=lVTz{a9$5q$O#$g!X_=Kc~{Dy+x8l2{9;q^Tq z3bGjve|qXAq80?^WFi&DAGEO*UBmv)G?(uygN{zN)*IIrhzl z^$QG7b^3$aeqoU6l>R_%-|QXfX~^?wD2L*@+1?9<@El~p%Ap@qzXLsBn-2Q!eq_1k zV9_Oni9on#$ zkK#Ot;kna1DesH-S}q7aU{862&uq8XhzEZ2-c35;`~(}*eMDmUpTQrbj4${Wgy8qw z?S#Ymrxf+O_XMzc=HoXt=2F;qSnGH2WU^5>O_I^E`HoHS-nTH;TMuKq=A@nVdj|W4 zkp{YVJ9!!B0gB)~_U;&g;uMqaygOV!0M6fH;&+poFlKGdN0YwjI+5;TJMgEGx$K%BsyOZ| zGMGD02C^_Z9c;3RFg{}63c7;p56}OAc>Pre@4{FzhR-3>`AV>nSiGSmp3fljxf&Sn z1wfoZ@Xn7Uj-|!Emtb7mIK9FCQsc0BDONW2?MWO;lA#VBVSKPWwS1Ak(IlLHX895M zhV-}~(vw;s{Xo(aug_bCvU~a^xt-^sPE2YUdcr#&Vp(QsWq|a$alI`+vT}f(a|d9# zJNFI5$%C>3pWH7bgTJ3-pwGTf!8>4s-tOSKFlU`pQodVP*nH!*&ga^#WoW>6b&Ug? zn`YnE?bkGr3e`WTe*63xd?Va*S~$n{FDPprbZpL3Tf^Y!RVgW!qyt7b7T$q zj&pf7bD>VxP2e0-3=yo~LD^aWsBdr_)_XkJgL91at*yCMzKeLQ&j*~1fHs}4uAw>7 zQ2p2ETi0+j;5*irb^S&IzT+IVqtC`H{Cgx4zh7O+X=}SgB7&3PJ)Ja(2;z346aPyD z{NClniM!!BINd>b?-Y@ANpL+C-c!HP*XN`?kp7EAr{7IP{eB|pGvIn65p?t5{k25k z_L0ZIJ;Lp?yaeu5_H7LO55T^Pn3gmMH@;Lzc9D{rwf%o5p zcSnQ21>~d39pyM)`PK+yXB;8VyJa7U%R&B2?;%8(nbNpp2BU_vMFV*F6duSMYpI!5hl1EtCG0nZS1K7=%#eSp(Tu)$*&DTp~ z;rU)N6W1w&V_zm3^T(%=+tB7rBe~!vfEx*JD!Ad`1__yfJ=M`a$qaCJ@kwB-!F#yo zR$Y_ZsP~yIJXE!3A42=JJFf9j*U6yW$ns#eu1T?X0gyx4cU*8|z?HCd#HzhB*S#%_ z|2BgC^CRgfbt9wU8CwU)u+{>cKRiDTep_();6{NnNbSj7@SkSS!A%yYv)=+R`GL!^ zad2OAE4$XmlUtZ$_N3lKj)^gr58*yrzZ}LJKap+hTchp?a!mIF=?UW&PCAA58PZ2twZZ50)%%us)rQs|1!{a1ELZZ>E{w7q zLQ^~r4D-%zfLEbLI3rbN>0E``daE-$~92R)6|X zTKc&0y)JWKSFfj?oTtRGzom!Q2Yyx-+aEIPRdevJaxXTGl!2*&i68E5a>OLuWU?EDY{p7_UyefX(Ngu{5FL!J=za-lB0+amrH~C5ZsrhNH;5!9_hk_;uNVH_S676kI&;mJC!X{lB1PbtFe(S zZ{W0Hv!qq{<^-Ny0Znd6*0bIKI||R`m$jOUd3>+0(kr~mRw?|9F!wP$RcMd1-;?f` z`FyQPT(kCU*SLtNz(I3PT9(Gt1rhd8z;D=Rd+lm1wjVVRaZFw>$*(5}E}xN#4^cNh z4P~6ElIBdjO1$h!DUu!LA>D7>zPrWd4(dL$gcHF9I?nEY3%b2O;}hY9z8_FEmPj@% z+>3F@?^MLx=WSxaa#d`?gul&;Lg;sG@sr;WUUYY$ajym72Ouyvdb#|Eu5i?kxZ%hv zRrmH3Sq-0K%Tx;?^#vZaw>HmWav9y<=RMPy)y`7#mGY<>%sP70s*7t(0t0qgRou3@ z=EpMO#t~%CONy6^k{gwRo5BSYl^U8KV_Z6jT*U^2>ju(Z<8}CAht_NhMA{<#g`|A9 zyz3tW4Yrd>@j@j%g#-%m5M+^qv3{y9%n7_aw%|y zVx~H@VF#K%h$Sd#5`r z49n#{{f%WAX|9+sy&oweCi7%fOjWGsHCGIsna5tRv2XR|` zGouPJHWKqMs@c5mXuN>x&8U{h((@Fu?~_by7VtMo3jfZ{eP8$i5_>73e=Nf z?QzwF^wFXhLvGM5S7mExJw-HnR_mLmf0XnQaEx`H)*Ti7dMdW=68qZZ>>s49mE6}n3JtniK#0w z7DijJ*KAIkhc6e;Twrz~Mf%PsR_Mt*`B@2A$$cAeA6hw;*zhU7+%c=zc|PGy<*X;a zUuL(+IemjXx!3oY{jxdB-JFM}L-)FNg$z z2j_7RSdMRA4{_#4kq&s);9NNK$7;U7fQpv#iC`l#ZnSi34({!;1czt5!4&~&lR+s> zlbk#xpI_Q8YT9&G0hM06TTIx01K#mwX=RP#Hx6#VQ_QNcq4Ub4v|W^86mCE&Zn=|z znqA)o^BN#*EFouByRzn0YZc_g=WiQ)v#l?L&sw>?^&~?YZ7zV(8*s1sssq|XozG=( z6s3=YEI)gSlnvod!5;0zF!OuuQ)l`6cq^RlPEnHm2}3nbG+ev4SG;|~f~DFNxspBa zN#A=j&2nQ}Xez5U@|-WSj}=l$(@T)OtGX6$B5Li#5KPC?lv%OYDsI&#dgp@hC3}%U zl&FXqE18RmUTvvB=HPO06PgO~;nmfn-^(z5T@gql*nId}$Fqrh$+ngW(pr}@j%3fj zb9ul{|Eo>g+~L>zA@@4+$bIeFj!LHM&`4J7n?AeneUelZA!BISvROOky2@f>zF$IJ zKY>CF6LkS+goDm_jn#|c>BX<8syF-S@&100b1u~sQd&T-F|@ArB1_D;!s@wMPi z#2u3LbOu{dIC3}h>iTMWj8x5PSz-$mvdMOU;pg~GYO6R<=VPo{yaA(OcfE9=4ciuX zunsWwSGskxd50?dCX55F5V7-}T>S^#l;z3-l)1EUo6Pp=vAD6r;#PaVyFwPRL!j<= z7rUnUf^m9sNt1b}uY022wS5_TTJ~GZfi!dJvcw4WkVk~y`37-ZYuCEIwe`s-%WDGA z;cF3a69jNJl;?V&iZK*=ZXbcF{R~9kcEMWL)=H*d{#wwwvFHyaJe=(hY$!7zG&naB zvE=36uRG-`k0$LHcOAr;Yw^#nm|Ez*F5#E0zi6WM)Tqp3Xk_T0VU?wfM%A3?<1fWf z$j>$=gb3x7&do;6TxM!-2Me84Ud1~+2u%2%GjL_A&xB@>WIGIn({on@#S*;%mT&mf$O}8)5JI(3)Xt^}wI>KMr5je=^Ofucjc{t48RDjoT z9-JyMJ=!Hte!!yB61FxtX0MRYcOG^#-mr?c=e{9s*zU6`QFs_au6RfGMeFMY9#(Cx z!_iEVxA@l5R@$FZA5^DL`(D~F`&5@Sre*c4+&1qMSG9f9zbt!Nq0e#6oMla7oxWv< zh7Z9lF;PE;nXYKOW?EKd_bmoBY~H`#qe;37%Q$gr;7vxW$hV(TzXjYp1Y!}dZw91( zSbjK$=VeSfP1MaGQ})hMO9GhSY3erTU%@ucCW2%BA;4!3-+gDo`)&Twu4$;q%%rI6 zeCWMCw4l_NRdmdFV@tR|N>GsMiKkb0e~IgfrW?xTULQZ`JeNO_QGGU~``P>hZfkV5 zXP0fF&z^sS?loVWV$5Yl#V`{f(|Fz5it!;c4p)x)O6){KlWP*Wv@))yZra@{M!z z{5jm_+)tVY{KQzfQ7bH;Q#_6EajmsknUyh{ZEJIq4P2a>YW%k2;vCT8;Uo|9kpTY` zm+jMtIPcEeyBM8XZv^`=dCIgjI8mNi%qCK7w{ZDA2;H}gYF5mB7#9oG>rt}dXT?aW zW5W0qe~SAnW{yNG#}4apZz{32!idhGNRdgVg_5i(3-)`LBP^NJ9&Bb;X-u!uHKq|2 zojQC+;jz1=A2ngt13PK1O3f5oT&4Ee>p&e()-jYO8C#`Nz#UKN`1-r!6)L7lr*bPf z5YYlhno=5VVsaMkL~_Nd&#X!t0nDVe@thn=Mm22d-<8U&hg60d|4K#HO3O}al}0n>mU?M!Y9@di zx^m`IDx13hu$gEJSbCMZuMvRZh%?5~57jSym+eM9_Nuf`c$lD+JFPAHlxnOotu6A@ zqVxcO!q_q?Wd)$%8XH>rUtQZMRzZ zJ9eV|!1$npzMasz3s>6bL5RU)OC={hxhIs48q4Gs9&uGt4~?0$G~PQ(6N(WXlH)a* zl6W!1@O709rd6pnvuxp(GN!qzn8vs<_wA%>>H&iBwl*}O94Nvq$;9INl_$d<_m`v? z;>DO8?~T1I-Aa^9eXy!hm%86`NShiGk@16{wDgX!vO=PO3et^c5hXIlP|B71OfKV; zX~a>J7Qk;y_1apDXp2)FfK#+DPR@ZDQ0A#5nkHhxX+=not%7wbnn(lSS2vBQr*fo+ zfO>Wwlujnve7{?5PLRs+WK|l|?*`)~$*Cq@ux_ECdk~(7rcw2Djs#-{rDkag(O!&WWoZhLrzWMd!rz!R zec9)uy#&{r$hJaC@luW0f~i-SRFDi~-I^&@?={kl*yUsD3AY$E%hTH4obt7uQH-Ue zg~XqVmZE!)Z-(#J+xOF&3YUavMhdmkkCB%Wd-GHLuiUoVXeUi{)k}wq; z&_N)Flh+~MHc43B`I&%xjNzM>6TTuwJ?<~J-?n)?EaTlrl20?Z;CL6z6Gt;4j+%&E{A$MfbA%@mH<12$Bmyjt*RCYLZN zrZnFjPTVmC!VIkzW^0tS?1<(b+)_l&MMGruAj~K1Vy|f94aR$%en*YkwFIR=tLt#h zSOD`IJtE;~_R?NW?bJ+mi&!4eUzJoL+22JSd1s7Yb5N*nFMII6N>2ZteyI+2L&;G^ zD;sA&MQM*p?en&xQ3zJ0a422_+w)MRq>*&)5}bF5{W_2WY5IyzH6;^tUShVMdMPKz z*joz6A93||4^2hRhki_BbK4F+ifImW-}N>eG1U%lL);&Et|^UU@B(m|>7o=E)?-lA zZV$kQS5n<>Q3SJxsiu*t%8)n$K0W!XblPVR8|hr~l+LCqB%RWiLfPk&zwatFQ*H^A z3fc+;9tHe$5kx+KNJpKDm&T@rKne_eeMnIEN&uQAsSvi?GL~?(6+-W2L--0pwb@A; z<~_X4No}7UFQS7(FTn1|)@`9=qL_z!=1ujIFQ!M8zf74`1m`7Jzaq)rrC6#^ATR5f z7B+z!whZ}}P$`G-x>#w2q&D`K+Q#@)8V-JC(|9lGb%Pj3*Iu#0fBxnF7g@cbU)qUX?-&d%Q2TJA4p;CYg#-!0xX*AGIAgu#2KK6aI*TPz?KC9@zx`N&<1J`<*8* zzPt#F%EGj#QNjI@<%_w;<%azW+mZEi0q`ZNP;NIxWm*7 zT+Q5%=6~hupm1L$4aZ2CP_&C5N^Hy_RUzTjf5^8bh-H(sb>R)HC3XLuAm)7R($x_X zV~nsAG_Z&*9~IOV1B*>#QFcvXmru^i>!4cb-0?j^imE%3^9qtEGxT1R3Tx&-phbHo z1D~x$F=j*4Nbliw$&Q#82?<0^hnhMJ9l zV1_MG%|f+i=B@vrXs@1=kHJz|)C2BZD&AhAXedXBme@WXXwo#C@^x5aj0mL~&}hC8 z9|^jzP17G0EtF#yt}}f`t`tI}xsLHf!W7!&lOMe&Lv*jZ>d&7d-i!CsCDoXVW}!Ng zc+4Tqwa?s#ZT^iH?HE`S0hmuY{ab#qEB;l*`zQ5F3v04R^svw)dLq9Hdc)6&^e9A` zl^Ien?Oj?qtZXTsOx=~WDV(Cv{zdVND6pBd@b7n6*S?ECZ>}Ce2<*yL0_o?d@t!q%X;We&G$gC6UK&VZr^D zLo%n1VR6Ub-j*yiNnT0f9Ajo0+wQj~(@etDb>`)F`;xWHKRtH5>u3LRj&r{M!8tbm zd5$aD2eO)qw!$CU*qHiaW`>hO@^8Od)kKfl9;;|E~4wP^b zS9``_iH8H}NY`v8@L#f$u9=c#nD}#w#HbD>*xkttz5}5T_fWUWqhKq{T=mK8 zY++t?r`l91h1&M}v@V2uagSMOBG~6+y%fi=HF;ADI(!$^kn~ZB5AUT!89`stO$=+U zTHiYsx+`@Zro-VZ;KVRY`j~@2(+uDeDTXao7}GE#_BI+YlR7LW!UWP_V}9dBKZEZj z4a~C6cteN=76%k_cj~iq?v7tf)Oe2j&14(LNl&L1w z(t`hp0@H|rQIN`}<^IDV+T~qWK;~z1d$Txuo}QU`6(;4sBnMw23dZPZ1454skN<5vqx?Pee>Y6hG|M`+faR~`4h%#d$u;B-UPK zlV&;bHue87LAJL|pAsoav$&I*XerkJ*hES3sN_)rbmPgn)#B3Gd$cH)OYuDn{s+ra zftFD(c~t7D0H*Qe{AzKT><_gmia+9y8YI5tQLm@sFpa0+?~Ti}d8jR1{E_bePWkRb zZGz&DcSa2&Uh*i{XRw(*BIoCf%lw}ydl*DW@hInIu<1S`=jMz{zuTiluv~iQZ?alm z2D|Pf3hs|_=>|PoJjl5yMeI4J-)Ltmim$M`;CEAYbunvRgT{9%MN^g=oZA;NiFy8pOjg3U_P$_Zyfw@AU$JsEhAt%c9Zv-d5{wtZKkAA+-L)}*t z=my#0K133aeE!YI zR(89ku7rja66^k;!owknb*wA9eNtDysVBw?Q->6u&@kqol$x##Yvrj`9$}(kxW@yb zVT!yQ=?GC#4fhx8_{*30=kdSUeTa0tN3u;`3Ejru=mY&oV;kVRY2a^Cj0<{50(`^J zdRN?!^VQ*_3HZCuoxJ~h0sB=C=Plkex7_vi<=ozXG%^3~a|^G&uW|AJn}Bb;`cB5h zQ&kTuE#4rT@4^zF{pm4nx%l=9tQtyt21xT?VU#xu>b7< zEQnN*j-@d`;ww4hv$&)OJ?hjpC4@El(bJz*oS*(*Bu~aAz3NdHw<%$$(NCKGtnU1j zL*gq1<9}0r`jq3rR|@LMxcFBO)x?X78T9p&K7UsK@5*UUk~BZ7-+Rh&_bUa#WL(s% zhbrRi9~l07a`>wrC2^Y~2H_`3bf49UpK{=SrNEwie)XTbgURQ=UEipUVsgN$)OOm+ z%NkaV1eBEN?txXFuh6h8-3D{w2`R)MZzWH?d{@lWzHF35Ht9&u_Imu~yZpbT2eL^< zGmiBGx+Tv-87h(EFDDDt%WuR?oytbPDkd4B9P8))2#P}pBmP$|3n9Grhl7r6OQrB0 z4X-?EJ;^@y*SVCd>XH4s(B*H=?apGnJXthV)k$qG-V{-eYwSJ=C#+&H?|c@?+w{sE z$C#wyJ%h8Lc$2~B{~)Xi{`EiK@t*=`wMiPXejjEU_^KK_VHNnL^V}eE?<4MQKo!H+ z&S$FPO|NbvAo+Xb7ofime7m6NKT^bZpOfg(j|hX>qKyClsLrDd4ix|QiF}h3rOss> zLK;C5yK=rT27bJ-7?WhIq~27&L0ctJwh*?f7kFYs-F5s4Ve4iJ7{9O$>EgWT#?t6K z84Nn4M^u8!|K8VcD{wo|V5D>MA9lY5rtSar;A^QCfWPIWNyZ@`5yYYvz$ERDx8<C~tcJC(Gj zEb=G-e{7bYJ1jyS8!4wSpX`MxBrrPZXM@_AF;fcP! zKE=&qohLwQWk?h;=eYwQa*UA-G5JONKjH}%tsHPqr+sQ(Z5WQ>;-=dn<)oqoPwrlBS+|6pKC zUtc#R{&m39|1W~RugXLrEl>*d|2~F^RZB7hy@?&I0C^Ko+2+~P?SX*8f8)OXXcsCy zw|s4A-1PL#`$;12N$v43q8*j*uZdK**J)t}jT1W!J=T+}mUITb;0qaVNw6MS)3e7n z(Ex8y!Vd*i@5>77&)nN@xwp>jzy-xH!?S>x202+2LvlQ1Zsj(HgyVMSM3#x?Zu1jxfSW5 z)|wW&AduFv*6%ncODo@oTEG1K-dy^LWs~2+6TwTf^bf$}MlRLkgUz{#n*`|zYJmcA zv5Crgp-VGL@Ap6li|dT$j|;ytHJ!4rD}SV3J2h7WE`7b;5&vi}VRU}^dA9C@D>SBA zo^ku!`PO57d$8^30I(+LV0@=H0Q?YSe7hLVX+R}Vu@ts*8UO~mjg3m~oY8<6zQSbB z00xJ}+v{k?kxB_oq?;&yz-Igr*WAQyP(sG90^-&ck zu_R}xeeum>&}H$Y+gr2%;LJPg{0Z#IuO~30_|M}RxD&#t$B>VF+qhYu3`KbjB%A9q znvXaoy}3U=IOESMDBJ%ynD==wuN0Pk77!2Ao7{_*{kL}nm>=Eji3gy*nu8XNVLJ@S-1o>} z7jRVx%==8{vD;(Vfh{uFyxlEozn#lArTN{>&APVd7g-Aio%v_&?P{TmhM>T$vxoUV z?tu#`V1}mwUx9k z*iKbI@Zd)wZ>V9U}EQ=bF$CkV~N~nSjzSpDR|)vtmQPI z5qL1V1HLV-S?<3}>)BvHu#TI2C9Hkx?4w=MTDtc`P)R_3F>LL$`PG<6Mc`5-3UNo^ zULCQxNz8jb)t{}jnn)X&KRk~!Ke&E@+0k$7BIQkDnsXOo`Bdi(+qnmykWH?o+yDED zg?w8WkR)JT8G=p)g2s2w0>Jux^Ik_{XD?782_fybl?y1R0oD#}H)~%kfd!r+j}i*? z4`BWZ9~KqA+?Ioe*i&TO@T$K>*B}zbi$t~jkjb(CJh*ixu2t}ZPt`))vD_|`z+CeM z{i_#)R`)O6UhCIIe&Xu-GJYzvVnFJR(uNvJw${fs*8m;1sRrccv3tPVM-nSN>Rh^?8Sro(uh0;MKg% zkI?jl_c`2jQ+qVJH}-=grHHu-nAvGSIq+a& z$07i1210C}0l^{W8Z&>t6uHTl-d5k8Rm*eSTs*gSFOlg8WSW)sws@z}#9(CQ8N%hP zIe+07&~2}1(RX6ecWh@EnJWUq@ypLvBGV-Yw zK86{SUapONkehoj(pa1?Vxj-QTR-Ee9dJDNwT}LSlOTSP@{TJR$Wyi9v%|I!sp?bdz*uB>v(<8Ef$d>B8bE4<1!Mi#K2ddJ8>fhD=Bo-}fH<&a!t#NUgT=^@BD; z^QZ7M1!HTIlKUQqD`ixio#M8&#bO;*Nw0Vwt(?Ta#%_{iN2p)S*IVkp7fb8%{-Tu5hnz=zPZ> zZlA0BZj5C!N1beKi*4b4|L#(8ks(>NTW5&;_wy)AJ@>$_HKS@*HIP}2wqQXZ;7Y=7 zQGIc?qn$){4tJfoXO6iajQ!o0tx@u3D~Sc1HqU5z4ncs^X7H{Mod?12(OBW&xH5(5 z4}wQ9+5!~aEZOYFah_R9gyriahftv_$}H3y=#AAmUYVi~V;C9Uh(uT$_Dj~VM9d2h zj9}cN0}N*gj9e0(o5kG`2eu&GtKhJYjB_K}1`I_%Ib`^ZpAJXJgHF6+5!-knU=Iip7@{!SNmU zRg7*8-1ttr4J5-V>+Z!nwvszHoSVj2?RQTZlZQD*9PZSJV+~PQCHJUvyg{XH%H5Ss z?n&lYlDq55u@pm}p?}B_O{URlO(mi}st|uZnn<6NDD2LFT_$`;AL(kFs)(y#TMc`@ z{E|*DtkCE?yKt8`pBi_Qmski(l7O#}Y=Xnj zNj4k8rKZCQ7~>*I+-LC7Nt^W)SI#}gjH4bL=QEm%NvHFF!sGt=M6krl%FoSeoJ+H~ zKK|(-qQzdC-G=CM{>@e#i^gLMXSK%4o_-^w%g03{q&)FL_i12u2-&zBW5Z%haKi_L z#IiLbQ$y#!LbtE%O5-gAHQFBR^-TE$wKEqw_vy{Pd9!!1PI1VJiT)?>Q^306fGc9% zl)x1UZ%U?J@m~9~`Qjb5QdZ$S!kbd4 zJ`ewva&yc3E`qJ(W7=6%3;VXNq&&W{w##EKP__oX_0SvJz_^hMTfnR7R)(7`1rTv8dV2W90wRP>yi@WBQ zF;L#=Jvt8$;@mdeLKq#I;XE|ow{OdrX_vC!4_m=a=;pD_)x9RSqiY&EH{008H{HH* zqrPyj_#K`pwz9Y+MBGnA+&H3U)NwTk14QO`L+;NCxZ+sev^_;s z*O)VkU2EK4R|EozCy&vI0vq&bqJvP(6)%G;5DE{NcY+95Kwql&}poq%(9~p87i_?VS~@cyII1pjZYqdMdrYrNa^F6N1!CBfypRDFWPiB}mR8PBLLJ{1Q(cn#`gfmzi# zZ5wWelGIiyw>!a2X4Jxc?N33inO!YTM?b#xx6xRdYcDz-jena)o32_Uv_9xB$7*~q zT~8SB)OyZ4(VE1$$(0D_=9z^-wZ${3XT3DfYMh?AgZfBewxFF(FbgX%Wxm{6Z)z~+ zRgadqSCzWlQ|-1smdR>g?^R<5bMIf}qMu}%CYOwv<;%N4xE{vXIpXlA*s~LCFJ5(& zCLv)3cKwX4&K&fdR(|^~)Z5>Z47GCvp1{`o{pDB?yRHIolURNnS7c74LmZjJ z1Hyp>5c?uy+~$c`vtYl8GCk~7iHGW{Qj$HiNiUtE+|5ZNjMV}k~=fOXD4UCbR6 zcwEJeJnu=CPxI!@ZY=f`tOCPliT1%S4{*@H>4dZPC5hc2MwtcDsl82qyyJro%Zf7+ z@MZGrm(UNPq$p3n#n|cH$O;Ac877GA7%4(_#(9p6m?X16QjnqO(zS!uZ3@kUV1>e{ znmr6>G4dPi&S6!Dsht?*MAnDb#45B?%Q1jcW)(T&P6gFb`}=JJu^I~JgMFbm(;qPM z39GF!QABjcacIIzb;383*8MEFt`x@!)!r0{-X1mKyhm^erd-kuMuy=lic{urQVxF> zt->^SmLHOmZ{1w)U6iCszi$|wb`U$zpyVx~m&6?s?q^B(3F&fVYM|>o(?u@)n3i1% zrB!GlqW87!JDPTqyP%|#rC8Ka+0e488y44L58gPonneb~y6pK~$b`3nhYx%{=057wYJrgs=sqRAWZ`Sg1l3|VEbki8axW6PjJh6`&F)bu-=X4!Qj`(sQ z-5!=D!CiZj8MoRg3K-KGDf}60c$}QNx!fg}vL5%(MHS@6B|N_HqBNIS%6+`qL=fm) zeDGrT8~uK6T6e%)b&lV(4xd|ix6!Jz{jL#GF%d}Si56OE2ybB~ou!91!w&CH%O0Y2 z7xsDtT5jJMv*3DaQ|UC_eI*aykA?z++Gx@H_HznVS9Di&i~F|INMV};4_8d9ym~{9A_MG@O9T=s%HgDx!B54I z@;@)S-K7&BlXh>=FYnV=L2Y0TIjRNS4N!{PzjYqqOKEJPVNzW~Py9GvV2JD)17 zJojZ>(14D^3)S}>y=0RFSUV8d&S#j{3LTcL%OEm;1mHlS6dDT;?rBLmL}*Oka4dx0 z(i}#`PmA0aH?7X6izre{wMev7quD5sW z7zZ8kUWfJq+W}XSQszaAI7kbtA)MWS@R0WL1K;Iy-zM`OG%dYnns8P}vzLzWgO&S4 zJb2V4A0+K%>?>`=rb_BRGU+FB(S9VdXN$ghAsg)@y0^Z1;?etZOLOU!i%yQt(t=TR zZ5~$gyv7^-RBOerbj*piZq{~|zunV8!@jc*WfRcHble zm~nT2k1#JkmZ$8t;ZQ;}EO2OX=m8jy)}a-#==TDQ<0#TjyH?LzwQOyCDrEF`UHzW6 zv7q;%&_Tc+8^^5LO*mkfS6vY4SFZp5$>xe`8`-78>Q(ANWF6VCg4EU0ZfqUvaER1Z z=V9a$UN>0`>oDdaHXQFI(FjdXgR&iN8hwvqCqESuH;u70lzd;=F1Fe>&WUcZWhW~k~)yAN=b$kpg$ z`cuQ7QM4HK#J;OGB|_s$<@LF>q=RwXR5b7=U?eMXk9+@^e|X7sH8JBvI>gZrEi^6IoQhUpv+vc36)8SLb2oG9*ZNi=8b zUYV4%T@-2ofvGJ9Y#LLIKieidQ(e~%zkGz;(B%;)5vj#R*C8F{KqBH#lHP1}eDQ$B3U zQH5Nd{^$eYTvTB&6IJ^IY>6({3H=3nAkm4;xKl!hu}e_v>6dh^v4FC;Hnn={QKN@u z6fSCq{3>YnRhrH(_`&gqPQnTTkcHkuo)|Y_ruZ5);bW6J#)KLz0-pz+0-QZB368pv z^HNMX-D%QH0^Mnnc?gbbH2$u5gcMV_yt);d!kr}?r9R?z&xcVfuXai@xhIpO2Bo>| zaL+^NZk~S6^nIHUsv~hi#zZVnDq9Uqh;c(30xCm%9=SSBa3SU4q1t%Qkh} z7U4w3?j~V(R_wAGcLt)entu9(ynld4KYeVTN6(bhMRMeUl(QVEWpelaN~$QSv@d%s zIQmF8$eTOc*Cs)>6HHX)8}3hg;Ts+*>GPejWiF|*uVly1i#erggB0bH@yY@5X*Hl{RKZyoSh{YbAKwANpA|_NqfdcOZRj!*;td-2;uGCQga(?ff}K# z=h@nPL!310cZodTM1Q}PSBGzX6eTBc;gq8jI>o|`%bw04sh_dqK~nq}PMFV$;H_b8 zzu_FGUQn~4+aEKJ)}}6c+8H2W7Wb3pmTp#)=koW^Cd93&OTG5x;+%V5py>)i&X7XCihzo>kN?+L~pSqBQ!xe2Si zqR0iug?BWVvl-L_yxIdzyM%zcAb zaekVzVLi`>#HOOjB~1EIGVW6x>EKTu@~ty&3^TS2lJInr&BkyKM!MUXMU0)(`0HF= z^HEi~7c>&q=$}Kjxo<{)!rdU~+);l~88^&8qG>aDEsnr0b&^@fYy{A(X4a^Rtb5Jc z`BLaPS>&0}^VyDHkSmv-b&1{E{x??*&|bZ~$}C5}UsO#B`-;9Z`hLyfeV@RLbLRSk zFevH8ZU<2ILcj-pke|3nfX+XiiQcuCJ79Q--*0dE zYAy-bl2(J)va1{`FL%&M8d!4$yx98)1r{KLLs)%gVl7xAyKOg5q=H!bfGL!ryM{?u zZ}L&Cp;&p`hb!rDg&!xFRd^$77zd=}Xgs(-xfx3rZYaxo`WC`{s=w^e^N#{yx5JA4e5ducsWO+ zeAhGwoONmb#66%O1UjCAsyy;PJ2nLOKr+&U@H3Y4P*%oP z=oMlqn1NZh`vluA7^9J_<}9{nE4DuPq2hU?`gtQHrQ@2;EQlDIQUmR~Sf@O_j6xK$ z=LT0D8G2n4?-zQYm}EnA3!!N!9FJ3+xweN3S&68(=Ysw>gp5JGC&unCpiXj;iK3gH zxGj0%8!&iq(q4OvWT5p5%>Cy5IjHlRp~|xR$Z2_v@vyy9U=e=cHgd&iv(4BR?pD1h z*)u13vBN0T)=9e9wPbdE%^wh)0B!4CU$mKZJ6dU+J~X@CF3mqP#9_<#-@{R#ulqHr zd|Tv(@8LCR!D8o$tX~Ko^Z~7+Q zSko>!{viTRxb1GDh6+JU5iVFF(2tB>Z2~iwBa6qCG z=R+a;infT8=@YqgxfFS*E%Z;izcGrE6M=T0(E8nAK`r5zL~^0w8-j<|I0fw;e~KMw z>TAo+{{$90&?MLY5fH&Gm8Nj)u1RATx6rbv&@%MFDLVhAeH`tJMC+mxPTTPp6HdXm zaQJWG&Z71q_!g|pBMvw(fLJ?sg9JMfw~%kF6Q5#`G!``$X`q>-Yoa!zEv!f#9ijQbQan*?r{7VZQc@JlEWdkN#{mtO!#iej_w4wotcW-F zH{y{U(MG!ZrQdL?ETa6cFS{O&@yEjS5MB3txJ=r{9T-6sr8ze$58gaPwY%FjEU>$) zQa~izvbj-QcxyVm0nj8l$tG9#dDQ)WPr*{>4;|3p_}99^{^nH9o1HNQK&sQjqF6ln z+qWJ^rpRARC!~O_0z1zm_Lx;Vr-06T^S7;gT7QM>9o2%A5C!DrNN=nTYjE)CS?4&O z9xE!i|IAifvEft{LWZXpa=N0Sh(etrZcWH(NoZIbCK7jqH*6lepOj4&V-X_=`;df9 zGHi}5DDse`ivvG}t%1;{{1&2>vzs1>jH>ek(+>;wln{ z&|M2%SRZ!7V>|y8?p)(vP#ki=H9AtlSTPk<7V(2Q`ja{Uj{>Po^zGErs6Wd8LEm+1 z*bf+{KEs_8IpvR39E3wfF6xMH_-?5cy0%Bt1ewV>HMo3Ld(p<%WS?f1*=E1>H^_~c z%XmPA{4^pN-Nw`ZSlN{@*l;r!tDQ9J!C-afJ1ufzE zSHjq@?&Xgbciv>}bT${%z`ENRpp(_s;>#5bN6$zUCQ~i)5tDDqx7{mrho1E%i^ml* z^nVQ}6^EN(=f5Iv6i+ow4-tP8`F@B)e94lM<=dti(U9pa$WDF&OB_87+z16vV78Dp zd0*0O7dy%C?|g{F^(7%?I39=R-8KQ$`95`WFw2&X7m%iSA&^Da}z zXADOsu;U%0a>v}Q1?5;fA_qC!ZrQI7$8Bk5V`66=~oOVMaNSN;NgmB@b#> z1^ZVIF8+Lm%w0R14ikg?jF4~J7PK$E;n)AKhTueTo%|=D(Z(brU;k&4DAqa8lwHX& z&w!nv$!=N0nH0O7aXVOS2u*tdkS=CZs?RqN*%+rM)a4s+pCLc_0|M$ap~{Q(1r@5( z$~$7db5`01Yo94f1pwz0-w&`m0X~kcs}Y;j&>7WCem6-` zpE36X?%3_$KV$!c;-I9y=N)L8Z{{8#UB6KK$ie-ET6O*S?TP;rC|~7yF1$@O@T7bN<2$pPb+FQaAAW zg4xBncvh_bv&hol+4RSybFVweMu@g2i?72+d>USL>5uGgGTN{6h4{00Io-M~;|lNg zm%NSde@-#qfq#lI@AxCS*k|9@VmqVvYC5`nvSZk-+DXPkPMX?;p#Rx2kHTQ*HSaH9 z(JF(VMpOa@7vS)&W2qd^{lM(O{gCWCcY&7?s4xY~&ljJ5+kC#zTy44z7ya0N-(gm} zZ@Ozgv|~K>G9?E)4~p_*CXjpp(X_jpubK`Did=#vN#8^L2!B( z-}9=-YP`m8Gi{7-$CT36L;)el9;B*Nr9BYjR-X+Cpt+E{>rAsPFA04RX^|Tdg)QC^pR_xLcbLD}31Pyg}=RZGp<8dtiP-4{%P6d8Mmu zDt<8gC)D8Qu}*_pcLPnw-sJ$^yIL%g59IsN;LT5`hL$eJY>_2JDiP(3w-+ywU{!@)VmqOP}xuhKW^PHva z{2x`dhaPGU`lp|d;yL!EJkO=%E;zPw!p?7ms@>C4zr1a9u`d*=wnUbhQlmMR@gXzX zgff>5wvl;w)wP#ba0?6#(6;?MRP$-3^~F&d?nLhlrgLtJyAbgqN3B%Ny}uSZ_z%ox zp{oi(kl!IkD4bqXhce8f=0c+@27Zx55do>EJEC5#1r-0C6J`=-g>;PDqI(bfiCy`e z*JKzMjfJFF3ig=!hx^A3j2+HetURNP(Qu0xmwbKn2*LpGF|R z&ts1WE|{n1w2RfI@}xL^XqWaK#Db>%*8Nb4Un{o=qXO9KZ8@u7%p3Ku(-QpG%I%$U z+)dVvf{codkVbJrP8w{TZm)_Q-d;0wk@3jodE2)U+h6=Pxt(g$OulMLKaSg_Mj6dD zQ!QT3n`h~nYd$NkRrw@$^ucLGpFY%Tt|8-1LRahH#@`m=Lt6BfG;0Go^36}L{egC6 z18sUs6{^#btrjKrX;&@abp36rh?9EIDQB-*56@Kow}MzU@AQHwMcT=7R6koA`kGbQ z-T3+nv@lQER>_d{VWxd+D;I6$MEjTeN_0l_75(~8$s&<0xm1BW6p%S$E zvaIx$AloJ`TrpOZo(B|WLz4ymRUtSHx{ncbm*q6Qon9Yc!{AYW_Le%tQDyFpDJlAG zFmQ0{psN2|sktgVQ|WhUIBb20T3MSoB~<@d_3^67osGuTH!RkN0X9_(pNb5;7KYW&7y+FDgHz)? zT~(eJto+(-1D+d+VWw9|w{QmeO{@xajn=7W(;P-`Po>8V|7@aan;W z=C>id)|BD8GSS4FIwmb zbPeT%Yvl~h*sY|(pAt^XnjLd?sSIj)1_g7RCW=EsroF-0hYAa2FjJi$zTFbEH+{Pq;EG9E0id@#>+ek98)miK zW+GlsYJ7uqO`t}${oI0;y+=3Sx6sT47Z^dR_g0muY@7yudP?32@G-gnk%##RoZ(B! zb1ZW^w6ml8x|{r!EUo+g4@0zn`97KM+To2AnC+5=@{qQ#?&}}4GAQ~lR5iKsvuxkM z`P1W!=A_vaN515wcWjHE_5I>6H}60GD8o%MFUeTB3*(c^(8hjoN$S#ays0^FD+fuBt7{e^1=nwl6v)QexOI8L}dv z&>Ul6a}OFXwJduO$g7NrW9|y{=TYX>M%~^~{J?9lvvm~_d+UR0P|0wd?Vd95QfeO%%+v<*eB|B$~&4Yi=8U7yX{hb$4 z2%*JP1;DQ1L)%XvoabVm!KoaI(WJqAy#FeRce^!`aD1{AJWC3b7`%6^T}?e@4<3+c zRbfS>D^mVz)%H?8??e}Uqf4XhrQmGQz8HJNv7u<(t1gX0H}hRhIGjf8^P^sXz~VKvwE_>jqE26?c+o!%Tn zQMQQ3sZlW%FA2JJ##5zchGlP7bAl`omPwlCm1e^2rF#}Vw4Gk=0D1-ERil*Fv7X1N z>jz~wOez+lio`b&#!&*y)+7*he=fT0#jS5D8fz8xDR9>7!FI-wg!dPF*9dYyz0gkg zbA74>eg1f-N9%Y4%357JD4e?NN8czLsU7_(sz@NHPUX9qgu7;@*HJNKR^{Z5D z(0#>ls6x!ojm}Tm$1PHPb8aZ^cr#!y1nkP^ZcB3s$^J=?V=P165f?(J2m>!>xv8I;wjmMaDQC^Z)Y@tmuYH0J}CAlJ5?|AEQO1+ySLSz4Rv)ThJMj_+>s%?>V-Ud;}6 zbjh@(>rm2vr)!G#JtvFqIPXH)NzNbC87_j`Fn2D3UH^kNG!;1Ixi2Q?2Cu>7ww)h9 zT(*=45sHYu!2ddw>K+p9RQ7jkxXkdJMEB9c0UdvS2UU>jh+xri; zSN==sxU(}O_H%$?6>~{h{I32Td%~xX2Mk}RT~mDSQ6tYN%{eiymv$HT?N`+{Lix|8 zwK3->YTMxx_KRZIU{Yri5fk<&iI2ph|G;jXN#s#(O{ImQt}5!yA+GWrw{JsFW>_%i zfiU&6>GEd)F}Fyj`4hSaHa957s~GxbDn#v;4N;yQ z!2Sv4DBxnT$uq)=`j2L&(czChtWXBfAfHqe}>@UIvu^DhDO$&-2#pu$%S+bQ6*67`E{ zx2VEMiA)FbEeCQ3c@%_lL#MErHM}vK?*so;i%&HbRUQJ;W%@~{ZM{g#vfW(7&vdG^ zGLX!w%>1OZYn%`p*Qmv9H~Fxe_n=4jb7Z3(`S*_REl7Fw1N-RW+a1*xj%BuPv{D|e z9zWdOdkAEf?Be}7K=)_=u0rI{%0Ecef3qX2Pw%~F{zGP6$azjF`9{h9NHmHGjtU6Q zIB#DK;lS_;VzcLGYH@q!0qT+BgS#PDv$a3BQK@e#(m7rF5Ja4TJrn&O?RM!nWG|9*HV)W>Fr5vk z>OsKoK!!<3__>^405=~b{8TOo6DvmefLG=fI+I z7e_)_nvdu9`J@d-C{LQzo^G=wkS+)Ah8ILFY3!(9rD!xjJ4o8UFRr(!J)iArrf}%z z{9L)M0Q;Du{-L*|nUcJlBSjYyQ9d|#z=^!zQHI5l)E}i{o(|lZ3;n{6dDx1%AJJ-0 zZL9rB=0Lr@scQaQmQ0C2LO3W)$An+ofU{7&kgU!~=WaOR9#MI!RbzX*jm!rn6pXOo z_UQi3@iY&92xeBMybK}zKH;CI+*VMx;~$Ss%|UDrS`LPvGi+k+ub2jqway_YTUV$B zIj!#u&0mp*K1zkIz?*)PG|z1Ql8W}D#&X}By^Rw#0gCk~c7oPl&re#$8sT>gLT@yi_bRb9WbVW-SY?viIGw?$0kTvV2oM&>b~4_7>3yj2a8)VewMwWh*-_ zv_Cw|Wh``iTTYfvHj0vcV}Q8UYZUZ$_4W(s^}c_$HGbdtz{zD`{(Mqj@wwvbXYrDx zUpq|ld3Tjx5q5lfgz2Y$bv@1z8NYs}^)vde%y8nBmEVthEPJl?Jfp|mtS<1QKhv7$ zqgAITJU)55Q!uC97XOi-7Q=Yr_)~%g%DK}UW^?UAdM@qq|Ed_E<~zL~ZP+hr=F(^} zq9=}R6922pxdNp>5t=Ir`(NSUKM&xZ;ZJdGjMqt}C6J!{IC7>}tZ**UOIavVs7r|7 zXa^D~Bk-d1d7J#wpAr?^(!4oeR!_Liha>tr)7+LTY87Fb^uJ602VMqiPKgX#e?5xA z72KZ|$ukvDc=w#5yJ~YIJB1@DYPR(KD}gw}FR0O5^eRU4flQ$y1J|gs&fB7_(&(l0IZIP7#6UXLDm+rc85$e_&5KV6hEyzdT}x@}xYy zXw2lP#l1JYAME-)koI`K4d3Z}eX=HaGW%}~{Bx1u+>Rls)YX|= z08}ANX1ib3gmkG*q0dz;JuL-jU{cTl>xC)k|Z5k(=i}5>@qfQ%A!U&7<;>Yx8 zeUdAYW%<$pM;Mgml>OSR!9bie3v=Kcqy5I+6XxPU+XK#5ubA47G!kT3DNLUR-zcoK zKj62yvt#+QJ^_4BjyEFY$ZPz5W#^8Vme!3E0i3gfANPmZ2R}J=C~tpr^!rP4DaW>@ z0_UYtk)AQ!bjP0WIkl&!Z){~904Yu_x3ji?nfTw-@Xy<}dXI*mpy3FAV005=f2N~z zX4PBXua%pGBbskVECigzmJk9$r1`S21(bjdX+BD9SH!|sRlbWGa|S<;ZhyNY_%rZ| z%H#u!M|ZuiNdI5BFa7Ag_kAgauW0-GjjuYGljc;um}ULTmox;twcDpQtn@{tgNipO z)$w)uzf6*LXB^y~a9StL%TnP>S@(&Hv{XBEScy~p)w6A(4kD|Y6fLRb9~z@-iE~{d z>rP3SI_-tfoB?ePsmNFO#HcNYp4ud;B4o+ zfF>uj#FwgV%V8$_?39G7XSK>yvjyuD8QrLs)!<$I$zTiTIXLHu$2G(g8p7aDgX4c- z$3w?__H%r#I!F2A!7fda$n?7YLU%!TnXfXpJvKBdYJXD~|K`-QGL5`^tIBayRt}nm7TICU>%#wkL5A<`eHB z7<2QAB$OGMtKE$GGL$K+(3PJy;weo7TF& zLs0R_h}7RtP-IE}Z*n2eLg{aZ?N|R%*;xr!=cgbfkON(h_U9F;qB?RQk{EI(9!9z1 zAkh)QfS7;oWBHls&MkR{wc6|Y(Q|cFpgKuoG-Ci)vG*_D^8@cJRCRV-+_Hz>I1_(H z5NHN`WZnp@I0hya*-Fp`3*q#>HYMZia==zvIgZm3B^0l}K*e1|=82hpNHwZn?a~$v z4n)gi@*eY%yx~|OQr%0xQS(tvhJ-GQB$BfcW*uCz# zcij)h8lydb^f*XGm!cg=c?_LuJLip={J`{IT12Mb-C#PUZQE&mx8~a(%ABYqPvtL> zS$$$n)p&7x_d6#|JA>kGH4K4Gb9LN-O@AQrQq|ms} zDIOd-S#v$(xkizsdV=?|FRz$SF64!mU9}d{uVQ6Nq+V2Zi`M zfS0cdI5F{+q67`%ZJwC_#W!=NbYY`SChjQ4!Q!ZWV9;HE&J`BoWyt>zOpXBl-^u?- z29o5f3;#cWV0*zG0}J1UNRpYbn6?vn4$8HK|CFoeg6PH92dX-FosC`gqfiEA%%|70 zT3gB;y~?-~-jGA)R%j%Z8UVm(5d5qAm19Eb)LX*i4d$to#>~GnO&z_#ArjjU7HA~Z z{+-bNeZoNqd48I_y)APB{ZL*t=XEW!YPVB9=9HaG$eUoXy?B|ElK|tJ#O%b9v@$Q4 zu|>O4{qOY==|6fn4X9rRU8;E z%jE2~bJ%QkdGFEyD?Vym2$q7eePHJbXXTmqq-@}b< z5Hk$NlQ>Ui;EG9}`XFx~O`4CV_I&FvoZ4lEeaojOuj-;Eb z`=yyTNImD#P8j31o*g_u;l_uM*ZS&Dmh(KL+^ufYhm5y7(r|G52_s{F{)XQ~CHhrwb*qv!#jUUpf_#w7z!Eroa<^E_D!;a%9>DV+w8^kReoTUJX4h zc7x1q%Ol2gd_tm;sI~yQ76ZF7f1z!=remR!K+0t$*yk#>kNaIzo^y}$TxeXTL<96g zX4RbUHSVlugH=L={9f}}SbU}WKlqiQb8WZ12O$Fm$5psf|B&EPguQ(7W4{soP7hfT zKfGP%*0)!axj5rlFW${HJBAnccuWf(mi z|I3VE-nnJ^n2s$t_YRdo%<}QJivH=hU*3;j3fC z?$g>GYyA)YCy!|rZ=SqZz0;k4SL7G&F{$8p^haJz>w{){2^y31pk!q72Udp^Dwo6H z1B{cJCA3|$`UWXLYwp-(^i!lM?aFqIGixw?P;o9ym!*fDKGW#uOS=$7g*0G@qGXR$ z>-0_fn%+?T4;q1sY1%n^3_>wtgSfpq1FqTxx4WGb`JSiSSREf5Qn)+3l}CnX@>tZ2I?O%a0)wTJ%I7Yz&mV z$VQ&%dK^<_@*P)JpzZ7SE^CGBp!8V|*G~DDSnw}2`%$STz+Dowu%fi^_@r4}!51ZR z6tpw?b8P4VQ*cq9DVN{NNT8D6=X(-ZZ=OB{snlG^6~H5x-k*;Sl?@vpVR1~=cGS$A ztEiiqTq7u{&DcK`QlTDq#XX)%Dn3K~#EPwrBzlSk8*xm~&sf+cnXFFJXIK0L z#rBOKfM1u_WA!W6@LV$%;e-rm#n&+|KKIX`um9yBZcB02@kFjm3mePx}`I@E34#;o~NBf z9BesW7<*GzZyd)w$b?m(^F6R8jhrJ8@dPdZSifD{3-Ycn!e(){P=V7t2(sLoHw|D- zL!hPsY-0*KTbogYlkd~YDfEJxTQeW%ejFwT$KL{vYHx)`)&7w~AB!w&4TiZ$Dsz|^ zXdBFOCx4#TM9WJvz(kG(XKj*$Yi~)Jqy|SDVsVyR6}rC_-feB_Ixe`O{e_ugBbR1F ztu%}@(Z`QzxUs#rnt4h{c zsbo<#OesDPdK)FAsau&?z-SEGMW!SgP?V+}g*8qd8Lu5gmfMqr(!k*>fg&{$N#)z++`msdis`;xU`h>FB3}weV?` zvm)u%O9wnHuZ@$PXg?K1?_FaQ)u|Xq1%WJDg4RkywMyjrMTEqKdipsnMCy&91f|k+ zjfg@&-6LWB&166(;K_ZI4e#N0gkYjZ(_##V()YWtr=XF{4-{KlldarLk9MPT=Du$J z1VCnnQ8GLuEyqHkc`%{5wUk63vAnoc)z5bPj?-k? z({JCeMvF938D$n4MdFl$+nf&)-bNy5Eu(iFD#fc_9tZL+E=y~1ni(46sy$|)*LkIy z^*!5m@>|g)hNx?c)zrY#Xft7j8UG{=q~xby&0L!&h6CAFX9p*`?)2ONM7;?cz4Zm5 z^5r9sl~!qy@mKTw+7o=hdfBla)~@uR_f}$y9y$%{RY`73!&)zu(0?rZckI%_JFbK}HT(@PTgew;KRHjon?n}Z zlVzopZZAQWqB<+HX)5{Beh@PYWK0jyr-KL+Q0%Z};=aL!d9HKYyIs;7QjjD0#5Ck> zzH`2VQ~%A_^^0ypiksW8V1WQCIscLStj!9};J)i;z7kDXvyfv(ohzm+1nN6#HISGQ^`AqzgQj#uBDVPAK0;98-U|ychW8 z<-<=RGLmEVQAZ~t9`zjrjRVg>imjX}Wk>(3+Til)eh(WujlfE|`85rbhUw=+OAjus zTUcswm4e3%_-#%l_Ux9_56JkN!tQCc?$os}KY+WQ%bym-lUwdscKSAi(4{RnT&)O% z*&!?)lRZ{KP7@hUOP&NTt;&G5_#adr1q-e8LPjwchS%0*LViHS*yGSa4@m_IXq5@l z*z}CS;MLPcLKSkt#@x82$IJA5hd?rkJ~ZF=s%+h>w<0GdibURnm8(WMbmR!IuisSt z78Djx{)At!K$iqGA?0M2k`X4Mi`+tALvR!pz4~`GzM0Ir!P$ulyaDU^KF++8IuLMY z)4OrcESEK`5j&*T2jj3V)_v4-Hi64JFYI8}HMKG+jnN;~nMCaf3Mm`I^wsL~V8IRo zT}~pZJ~3{Ez7ghhTS+zeU8LBA+gcjWpBQbBR7acK7+wui8E$Ib`Q3ST&_!7Pppu6eE34Bz{yhiW7fu>E7n#%A`ibdz8th@bIgUBY++5lm(o8^oH_f zdKfJNZyq-#tR!DZK`4seHZ7p$8m^Y08FS(f^wE0C(>2lQ=iAB$kTa`5KqEl7-`w;_ z$+T*Q42ld5^tWtG#Wb(C)SNxeYSKG?VOkY*zDC?1mbKmGFH5`<%4@dM)#Fe&8zfM2 zrw8(g7B;ma@YVZZ+J?wd-iuz1Dj)WBjBB-cna@V~Bunv(Fr;`mn|)t7H%$I|7W$?9 zRpJ>_T5I<)knAKMa(bMDIexZob2e8a4y*TSm?CR7Vi+7HQc3^{=4uXdWmCfXp|Kz>n+)>IBA$%0JcATqTwRmpbxz+>WO$#Q2F}dV13DI>*Jt4)A zvgI#uNTD=~HmS0Z-087N`9w&e{%@_;qO>T=7?D!S;_*jH z79r)`66UOFIK`-hvbe2l+KN)AR360FY^#%fOMPJ0jfp3)%?SbH)BP$v7>S6b3{>f@ zt0O$tjoB|?=caTB$6Rys)8Tps7tarPthSsT=XQL zsUL|X{lMpP8v=-KdKFnZ=agB9HuWi9P{yevf#jEb2HQkEIOHe$`7FujQcekRqm*9| zZOW@H$_7L`&3PP_`Ibz+!+%IP>0DX2aU~~VPQFtrY(mJ;!J}=`-vaBy=t1@KnR)eH zhS%MMZb-i6Y0{S&Z1l0SdWar^TYVlEGiV_ZSKG8%Q?MJY)v!*N_>22D)lYAmu``G{Ai<>w{MiR?fL>l?t%$VelAleqH4WbVc zs#hm-8B~xAC{~g!~(g*3h)yGWdDQborF`Q80ZBeJj&MP-b@m&?zQ{8A}h;xfGs_ZI>M&fW|+~;zkffr1}e@`jjA(d{tUQH zqEX`Fh&trD{*Tn;?<_AjEr&1;50|Sft(*;$0cP)pAOQqRt5+Bm)?T7a^F#UWXQYuZ ziw5*|!aOPQmDX|!qbP^+$R@$Wt7e>(BR2lZ5%8pQzzxH#{T&DqZu*{YrDA9K)U9qd}S1JiWBMPIJyy$bM&3 zSB!7g`Hcr5aS>h!B{4+&HXX~vHAepfrNXY97_b(lM`Jpa-s7xHP5%nN_Dx9k0r+R#W=0L;nnGK zm5K_<(@IaApV%<8pD!H_>Rq!KNVxSpp8MbB17Zo-8q~N*mtl0ZYF@)DYV_e7%=F*p z%cn}Qmx~C(;fXghM(*6}?7o?H%1RM4G%TbK^Qg|e2NQdWwOsbp?X7&(>sw-93)f<2JrvQexajgXQ~VN&epZor;U+>9Y?pCg z3SLX<3?CY9cAt}lED)ar;3fw%PmSLRh9gDwx-QD zhlJ{lo8sI7j{B9y=T7cTPW2$d{d%E=DgV{PDWq|eiPb+-Md51iUexz&WwMToHyPEY zsyNBHk0FiI0HD%->c_;t`t7UR|7!EwWT{@6lNH{{Pj?enZ`8${Rr~epC)`oRl>GKp zUB4!`{LcD!%UMn7hYm_@&S&6p8W zZ1C>wL%JKmk?X@~y^@VSzwTBYVx0>i&k8x!tTAz9o^EB~>yk6|gxgpej_em-iV*If zazcVkMPx;4t(>9@mC~Li&ghPz?U`j2b2a_WH}uop!9{*s-)72<_pT`;*OO<;qi1j9 zfnShHGfuoy{sXOO5s6iQ&ivG=7DpuWhb!q9sPutXrWnZS29$kLkpsB|1v8GH)t?NiDa?To_+|>Q0U%X&Z zWK^XV`p=9*{%|RZ@Y&Mo=ikM5hHnblA3jR@8rXT3rccjf@g`&6Fxorf688I|Y2mSb zWgq9S>c8qPL>YM0-T+q;>i^2k`mLQi&1K4_~iw6+zCJ zGQjd>Y7h5UWd|SLGj;**^nr&G7}&EvZ{AwT+Yk~X($eS!N@;xNN%Xp-AM-E!8X6nh zc#=?Q`jmCd-cF7=U1psJuAgHm2Z=iU5-&**iS$v*YNAexfYCYz<6ubf z>rOt~7EK?;SV|X>O;cZi()v6$E&N{&54fE|D&j^(GARBg+UrYWZ`WbYzJ=B;O1dNz zRbf*ZXGl>lD{!bLuW6hD=L^W~pA6Pvc2r@XDqyO2-X4A$%$Z=OtkAyhULwCf&X&G!td?THFrc1Mdf9YC2ojd(~y70*#*osFng>S}Eecz?1&Sc6K;dk~$TYJf= zD2Y5#YxTCdX;=eIYvo}aB!m(|iTFQmk!ojmjFmP|&sWKtE(xi8W$Yv(lR}pq+hY;_ z7Ofo!NG}w9(`pKRvt`UKGLlk~a-6)K%+@2gq`j26msDdh`9q~jr9`FtpiSF*cP5(S z?DO8oy(q7DfjWWar&r=Jl{`k)#>n}@+8&i9rlkh2D+Fj!NJZaIAsqsXal~AL@i*8v za+y1VOx(DBe?iaQE=Jmdvuv7LI_XH5Mc7}&UuYraMi1u__mWh2x2>ERqe*zbttr%0 zoQvn$*xZwbWW8&hb8-QU*5Pe)GAB%zHHQ9?{+H>d#^@XDoACtu$0eDjP^o13cara( zypt~Es+4*sX9@mp-!SlI?0rjKMqXoHL|*Y;*17bh3Dhvc+NL-$Zef~yP2#p$=S19t|u1&0Nfg%CbPo3Vn)ozb0X zlW~)YmywrAo?D4iNdzNwCpkXFfYFN4ifM*%hDntX#Sz5iA$uS_?bI;yJ~9t=uWP7l zXkutE0lW&~u;p<1ZNw+fD9tFxD8*>3W~?T&$W71qDZ(z|z6K(%LvmX3m*lWykK~jj zR&rc&;C;!wc>7GmZjVy?)%F+d58EBuS=-;WKWX=AXKYuENRKd&2xh8f@@DjA+GpHn zVqj!oie^0KWam!h*pe5O6_pW{SFts-Gjla_3>d1Os>W82?RKUW@=(=VhUyqW;$n#=j4;$kXNw_7=Hir{m}d0JIV8|?RM=l z5zb75oN*l4^3ApZf8LMoB+fgwi$nk;Oqr@Ut>t;-GbNkt0!H2s@1)MVw<|{&Mffvq zbI!_V%7xgT4DEcK2ev-Q!g9yTbHX`fVqeGh$CzW?fZjj`pdL^J z2nKQk0YGJ7Fpv(Yz0i-<#|~h{v6a-==N6U^3y4vTMR5glLS$w=n%i;sZ@>-U26)4{ zPxeTjS(5q5GAA7;9d{&0B-ef{E%y0>B=9Q&XJ*gi!DGkc%Hzo6&I9BD^Efw;1f=bH zECeiEU3jtZaKT}Lb>ZE@lLemz#syVuI@TN;99tXf9pfFlAG06J5W^4~9dpcihdYg9 zTV7mNTt-}8&DPS+($&&2WT;`P0oyQslHi%;+2R@QS>T!ES?d|?S+;ApAh+PR@BphF ztDKzFLx;`6T486fs@N86D7Gsmp8J?PM^epI#a6{d#UZ5Uq;4} zn+oKj^Q3H7et~vj8yk()6YO-5K`R4{=Dl>1~p>eP5M-nMy)9s8IK$mgNoOSxr#H2EsCd# zm5LjSg9Q7Nopj|pUwIn+O1Ap}0oj6FKn@_c#x|dVH9@1>M#ZJ2rRhSw$?hNzkR8Ys zpSgm<>WPncxb(xYAr6wepm?2#UMIr4bKWrSnI zY(!xstGMZvKO74e{3e(om@Wt}{zm=c>BVrTZ(CCRPx_^2z!~ltzzlGPa|Xo1*22ZY zp>ePdSJ&Z#aV>RCcSWyV9-$x69T6T0FCHtFEv_$)d_{ake9ire`!)O({59Ye;57>z znT~|>NvVRS?513&9H-o;fK%Wp=b*lW23O45jgh2cn&R+cjpCA525@G0wv;M3XuzlA zpm~jUB)YhuIPH}L+**oPrUew#f6%zru=ej7(+IpcsTlPN0-u%2l5PP94IZ?v)veKt zL>9-t;)knAg@Vrd4$x~1BWcA|ubf}mz+0t4!Ajt>frFMcx)H^Z_~M*b>hJ+LREh*T z>-T9pXj;o(OEj0_?$fI6c9R42nbh{X$t(B$m~{0^pK*$x1Rtf7mctZXnA6*rKP!U7 zf#P6&sWh21c~eQ#C#KRR8C6oIayH;f`_=)=v5*#Y2D%X)fi6a;qLJu0bR|05T&5&_ zq+iN=I#bg58xhX^jru-F=Y~Th2`;VO(;bP;q)*0G&(GZ9^y|JIPOtT!mtg&3uX8>n`=SZo8p#vcu7tN=%`_an<%V~WQa2qLp z84L*8f6;i_aQg2l(>{DTX&KcAffJ;1q%mOV;6>|c-6_p}72R!* zG!r$6?zcxNi2mqw^)#PmkM9KUnqQ=b3Ao%a|CRb#03-wy0_z}>Ym-s$s^8VUt0}ao zM7%>EkzkcjYSbf#YL$_$fCHS%A#z|+CuYTF)6+2#A*k#bpV$cmj#zO z7r>)>+6CP`+>z+&3UYPou5q9)y@i>Dg@w5VV9IRDV#<69pk$_G;eqt2@j?0^eCmB_ zeNYG0)Annw=&|8mFZhyQFK_B>Dvut&o{gTmUS$!+G0ZVnU{LzEG)}rhdNdItRLyD; zVIC#gnR=`Deed<&m%WdBU3xis&3YAjvr?Nx{Q+2jpqZeBpt&HR*o?YunHK|`%(f7H zb$vC{;B@zNU^+P6IUQndYwlw1fF7*D)pU4a97`S39nnjdd+B?1dxd+$Q^!(eQ|nVB zMTw$BF>X+V*wz|kpMn~3TV=9(sj~t(tQ#*37&Kg?AvQ_#4O$DO-iLn z4NuibEfF;UFaxp?D&W8Yua3RuCEDKT)PmGBQ3-%Gf~U3_6xhGlxYV%p?-EllJT)m5 zB?vr+iP0NUrIDaaFuJ7b%T%=N;stsrO^zCST(yvqIQ0N!CCHEz$|cODCv7vB%wpS(bZiMcRL{z85h1Bn1dz^(!Wd}W0QR%E}fEt(v5mjX@mx5rDXvK_JhgC}OH=oFN2)6r1a|7Jainhf7C4J3i%ARo6mDv2YH|usUB@X8 zq;HKc(ih=d?_2AOI;@_tC%QI`jraP&H~sLu$XO&0fFEE3PzO|2VBEvpbHxVbe#_zH zI^;%EAtKdmQxTIjp)wp#_bMwgS!LV0PZY!k4ZXU1nERKdXmejP{6o3!|7WC1eGO#*L?;H_-|1@|8{ZZ>TGyUB!y zBa@IQHwb zjV%!^#Vx5V$d?0$d9I04@htlHOq-5bPTUFkOM^6mK%$CT5e@ zU%=nWU)>*G-vD_Gd8vw4>rfk3Yf<~01(JTpISL(#S!&&6BfF9hk#)(Z$#&EYF7J^Q z$eEk9OW?8gF|lE>QLz!RvHaou(fpD8G2k$v6#X7uhIPz#&bG;R%m!wItgNlDna+@DEp-YQPi_3r|z;gOh`m))Q*)r=`BROf4b~AMI%4YtO0d=4D>{4~dAXH$>ULA#w z9J86XnY<)DW>qRs-rx|_vsXi@qJ&Y7kkdDlHY=AvW7yK{vIfT>^d5rpol?h&o1u9J{Fogq}UW2DYS5U>hz+n z+cS@6;JdDOJ@2}|Qi8kP^)_ED_)>+sHQ-jCmzGzP7m@cS??qlkUThvbFYAiOE5%QI z=XJ&tTx}H=lz9|*lz0?*lwDlM=c+pUS`y~%7VKs_+-;T9luZ>(l}r^)l}8mul|~gu zm6a5flw7<$-95cM-8{WKJv_nduH#?k=Boz!y4=#IyxaL=F|oWl0yN@be2Ajt= zFNM(OJI)WEZ#n-tfpFUOxKe~-G;eDxTf1xfp?2N&)9rTcT>yaLK}ys0P0`6E!5ZgDTa2%_PE$=UUg-Za-iGp!d8zP@@wr>?o?t? z0sTNh+TC)8TW^c5e}J(V8fF&hdBOMxU^{mkcy5L|=pKO`lPh|0tE=dYgW`ue)5~uQ zjBei%l_$(`D@wCuQF6U9f#sIy; zl@AG{_v$a#->SdrocpNg`oJTH7in)V8k-eJ4j4H&et0@+1NLzhQiQ+QwulctR!zT z58QW1FfD#j&^&N#LD%b>uD>P+idX zdf`{1WR{tSGQ=0I4bUxUcqRB{*W9zn#gs@HCKq-MFns1%xaReI=VgtlMIPKx;Pz1A z;=qvwZLg#nlZjjxLjj}8!m$CJ&pHEq3pc!yYs@C{Rt!mnafNX(@_^W9u>snJ%Ny}K z&vxGX-GgXDj375ubJa=^FA)X&hE}(&jI3_O6_ym06qdl+2iO+?3+W42HzYTlH~2Q5 z?Z9`kb`XB1luOjdICLrZD4LYJ6n%<0MT2sia!oZa@NHmTAS}zU;ZB2b&`orqdXaje zIt)Kx_1S6w`cj_++nT=7ita`6W>hfD6^vu10g_K z;1!?{&<1}51;~_FOjnS}yq?*UVS;i3dH|V$dO!)FBM<;I11bakfeb($d=Kgd3WbtF z!BH-#6%;?pEJHQ3QpsNt&5yJC$Ge+FNRB4rSi4V2Yg1Lt--woBL8@%bopMz(T;YvBCuN8h&X4{HE? zC8``n$iONGxn_Cn&Fyw>m#@{WapFr**bL5$24!g_>FVRj$cLV(=8uwFA9{_LdnY%) zuE~%}?pj{0s*}p@A~02jz~d#BqN{S@7vN>^$Q zh89D$Mb$;M4pj~{4%H5|3snm>3)Qm5X%Z709<3IP#t|?CEEtvpOMsOw(hog_r<-3l zPldmszO&-2aRsaz77lw2dk*^mdkT9C%Y@a#LScD}kBr5PfySK1#>Vo-U}M%HNq83A z%%a}Bvf2eaF}bk((QU(R!)wE1re>#>zKXtP)jZTZ)Z&Wy6^m^+jd6}+3arC$N!;xS z_^Int&!_HBy`Q>0^?K?tF<;Z=Rq0sg7~+`gnCMvM80}c(nC4jH7_rDdq(5|as2)B7 zSAC}0&j(jz{$^#z+b~3!e`(N<`U)-7BF*GaXkyzbMkYLg`>Hn z1#9(S^R)fcNT)>fQevoNz@t*xl8sO5K4T^OAlogbYUT^^kpg`EX2d#KL( zjeo#yge_hjIxuv3=+w|1c)kVH0$r8mrHWVj;)mG?S=1W3HKYemwkWBJt+w>4pY@yY zGB+V8P5L!&yjgs;C^<9+2b<@c6KXIX^#rBmoyLuvMWLZ~xPf_gjhY8!Wv6N5^`gYX z*u^J{jzjVvH6A7`nhlu@f#C!T^(s_#peJQ|XT%G$5wmDK1cEceu@;;b$>Y&uxQjK{ zUCPJ4RMa@T)Q(LWP28yLTK4uIx2!}jgBivzgFE=Vb;fUjxxpsjXzF*ot~R7Lw>D9E z0P?i9jBE<#AbG76tt?Iqj1Nr6jmu4Z82>QgHSRUBF`lN}lerRGJ+%_1+-!lJXq@Ps z=$IIWgp##M*H=VW^uc$iQ$8=0$0o)nnkGI?e4H4aXqyl&X zZLey##k7=nauu{zr%IOok5JLVpNf;eX5c1FAi$6RORS zIR7{PFUXc8ClW8ooTNeuAkmOCNP;BDO6!Wq3VA|rqHDZsg0;%H%DBe3TEMf!yTq-; zOMTiBZ%M%5Fmsq`%o64cW+8C6zNdbI5=p*AVj{5L-KR;6U7ERp5~X~O$|8EURgz1i>d=E z1FCW=a;hIxKB#)Bc&Tovq>1$;twi~L$qEx|zJu*=?CjfWB+J>TmN7`svpyj?Cw=WF};qJ>r0GfG_ZtXeTr;b-l6* zIsi?B)<6rQAz7_iB3WcrJ=HFiE>%_^BOfDivIiaRX~0>{4lF^%f9U%AJ^b` zRWv!PKZ{jGz)x*8U}?K$tq?DR#%D>ZSotAVGrk5aZ?~N7JDRSut69maUFNo_f)e5y!8l^%qMf7Kufc`9m{a{;HNGL--AUTFguN z=_CF^n1aeDmBsR{)VU>$8PcrJtTTO~zRhgJ|7~S7NeN^~*uXeo7BD=RG>j=`6r+Tx z!T4GBq|aU_wbi+Sn$joV5}a|)bI#MwOZ7aH!O*l%p2|`phn$7XeO0J&p*Q;x;7pfDg&#TL;x2dzKpQ;1<5mqtF ze1uF~=3M4<=2GUD%!SO^%$3Z^`gY}hVPyB3?&dz((eC}3@51)$e4Z%Yn_0f`fA`3rG;Ebk|E$R z(sfpT4XasS1D7dn5pB9ss{2tT!+51p@E^E zp^2epa7;-)!N^J)>x>wKfVcd}?g5Yh2!s+)jo3pRKm;RHuqUzB*rV8+R)~^D<2k^r z#3~2*T0k>IC_o637mx?B39x}o1%P)}RwtGLgmhf`T>3P1H2)=iA$>M|C4I8CUA|ww z3tR%K0L6mfpezsq6b#A%B@ooG53p=l3gR{5Az}u>5FimC0f7au?ii5=w+46kSKqF^ zB{>tF*PU0LH=VyaZ>TPf&5o`3w~z`zP*6T78B__11C@ZX3Fom>2ns?hz+i`Ei)Dvp zJ8M;SS$WC7jZ{of#2&-0Avgo1cVc%eSL>JjTfyC=B7z)t5ix~eN5}_&cBrpmS*>68 zZwG%Q!3nBZGNK>B8X&NvwhCDyw~z`6GFUu9I>2fNv6}f6vP^Cxy(JVAl(8g)Kma~K zeJ600vZPEPw~}B4c`O~4fQUip1-62S0E%eC2WreXqTJ>3VW-m0fS&am}ZHV4i3NqZ^*mKxh*yGtt+cVu8 z-Ba4D+4BqR$(}VJwePwGHDynh5I{K49B3M})PM}i+ZPRD4|>y3*pRB;mAwpF0ZoGD zK{KFb&=hD9ga;7_IKo`R2(}YDf^EePV0*9=*yf;^hWve_AnASQy)g=S%b)DA3)zKG zD7)2rdwU1=g7;MRPwrdqAKkwhglK5AniH6nUgad~?KV?{c7-T;yLl9wT^q{OE_jEq zid_~UWaF~uvZu3`vcF_6WY1==WKTA_a5%e>@n<0>`G8zyR19LlW({>vs04`m*{`P}_d-zT*C|{k1*LUFn^; z9jn!brJ&ZJ?){>Dx&6hxsXg{R`CZVC!47t{VL7Nh=;J@;+%#U>Couz7w>%zobssZ{3IO%kR_e6ZT^E z^bUwvAL62Y^H|ZE@g8l(V^!Rtf&;)t4p#=11E5AuA_GmZ^~vLh7zBguUh2PeIw^8f z>ZaPwQ#a4wJQL4TC3;iQ)%oQ$T+O9{#*JWy;DunG;Iv@V;L%{E;F@5+1CsG4bXi+y zzFrcHKUN@Mchru{?zkOq)hSmS+?z{Dmma;ee`#`3BA(BV-|md>S zVD9J~SCwM#nO?VZK-}P^l1As?Fmy2Z!c{jWG_D16(n!iB%bT*ZklxcWwNaDOl>jR3tGQvmOlFwq`Y z-iQyDrm><&Fl8_X@NJ0_opDaM+C~y}k7GQII(;D1F0X>XmI%=iSJ@ceNC=Jz*1IfX zcZetS%}Yf)M$^!Wm#TAziY^0tIXoFuFN1nH*BNM$*5{5NW)MQ!z0-f^bWY@+)IGI( zr|zAGCxq#$BrXfv{qevxW4btzjWXcJB*0zwZ)`BU= ziUpjGI&nE2cjB!(XKn5f0a4&H< zTs*GVI`G}edtAIH&N7`~&~cArc`H zp|B8EdSiy6gG2NJOw{odtIJImacBr2G(99e)GWj-l$D{9u9883QH^K(*f{q%$2i|O z`#4~nGvMr&k82Py3YUbWMTR1;AoD{E7+4vy8Pxy*Qa-|40mN`z3^EUy93stN#mLW$ z;0ci2@+0~XHHlAg>BuBxWeA7?%b3N400c;H1rj}pq10Wfsawu4s51ug?4I57CC1>A zktHF(5G#fT#z24yU{`7jLWJU~adF7(5OoGLLlEO0&#t7;sV#rv1LAF6MsAI^_%pUF zCK`kBlD4dh8V()Y?&0I73_1X-;k!APPIEDZH|6M_<`HKX2V7%(&itI!@Q~qQL#Ede za7IHG3qTQDjnrK^Pe_4jfnR}k!J`7B0`Gzw1ug}ay3DV`KV2!ksq*a5!>|P?PZ&=G zPdE?M<>dI(K}nueK1n1-7|N5e)VM#D#;N?}S7E-YS5UMyaW zUPru`y;wI6O|UI+*T{XA@HCs-?B&bB?ZZ22d7g7NaV_Ps&qxJzy@pHzp@9Cs{)pYRSmQT+ibtx$ZaT zGp9NCv^PB`DW_5c1jR6BGSvh8q}K!IJm*4tp*e9H0#G$Z2+z*hb>F#|-sGGT4WNb< z6u}4qC;@h))**Ay-s;}CoNNtsC<+?LNa5L$^gOlhKlfnn_B}>GQ`@^UPAq0kgYP7r zSe2U`hPl1NC+-^z12)4cla~~@Si+kpbrpD|*rfnB7?YWkS&a`FA2w#nk0@a@X0Zam z*$`6ZasiMk(<;9z?W#vrMpfQbH>zB!EblSrhxa#^x~gOx0){O@0bzg$KsW#jI)vpy zoEaC+;CA70Ie}sVLersUVP+9#;bzdWu(61-@G+=zm~sS&1fywxI}>2)+Ui}5;K|Mn(c~pZE$s|3i7$+W33>qa#}?}MOZ~PLqO^fX9P4nrm1x@ zkw_#)5<7?m#5rOLahO;|%$%%k0z=!OVqsztV&P)Y{IL9p{P27zFpR*6K8$9<00>Q8?Y5ljG4@vOm32fS}_VRH}C{X?)q){Y-w&iC8kd%O;$F6pjgIi zrUpQu^lspm=T<27HAHbu0#J3vAfCOmyS`g7#N^46CSa2lw1F`Qpa$5J+J$UEiPglo z$?PU|C>k2XxX-gE8E|UXf9t{4ZOtey!M4aV4`S~L4n|5oh*J=BXyJC#8b4;x0{E)6 zn{Y{(i&3j7L06dP4Eq_t)u?AN&*JVz-hFa6`js|3>Taw#ppdOv>b9IaS+pZO%5$ZgMKf1)$m zRwqrzRMS-3RLfLnRC82&RBKd6NmEJNCDt?AGuAW8^QmWyXWV+^INLmTwcIBOceClu z4!#6TLWXX(E>^ce*X31^?Il}lVd)E}FDP6Pz95?@a3=D&c7#^6U~58R2eBivqobps zW3D5mW4NQLBQv2^5UkUtBdRH?EvhA|^G5TH_8YA?I*&A0qPm}SM~?$i`BK?a0jZp+ z0wzaIxJ-^$OP48>3A+c`+S{7g`c4OTM0b4bDC!7J7)X#y_>ce?jc|`}jPQ-Hj{rtEeb27?*al5UbtEOwCWIzjNyry8&|%TZ zic$giO1TTK226){#3bY;BnwLGSVr;2)baRAuKG>;OlwX*?MP2ZN~jbB>0qKVqU!*@ z(yM{fp3|Wn(1bWa0Ufod0G{o$tG?4Q9mxqLf!5T3qjq_=CEZW0`cFTYzI``}C%3KOj6h$h+nLAtL{Ic1opc>D zO*3sXEi;`l%`xpUtuY;CO=WFRtar3`tap_6Q|}n>xXnlm+cI~(+^B?~+4|-jUmvC~ z!!FwnYu8}s@;=D(lBcz-w9;wnzZHd*WYYvBBTr~UwPJEx`x57fbCGi$a|LsAb18Gf zb5(PheYLq@opv2DO)+gTEis*Z&3x^At$ZDzCLs#-1Qm?|Wb$RQX96-gGX*S;T5wq$ zua~Y-s1f!H^0fCf@$_8}o{OIQI9D_m+BeWA*Y}|hn!A|0mt;F#c>V4na?a6-=R_;?1bN6jVm(e{P*UFpluHPB(z$&OM3K&1SH zcLLVK=VJQu`jT^{b*!TJV-P$L$sNCSpLNakr*r9jNqv>MARTN}miuv%G`B*HtF;S4 z(!=fsHa8@|?8f{++DQIsuqIqir(yU4GyU;tJWIvQGt11Lomq|zKDGDz@#D8p2;-H3 zN7SVc?mL@3J<_+xdv1a)0=PLoP3{W1RJmPNRp?Ir!w3& zF?&9JWIoxkr(e3lDEDfX-KV0vNp-jTKd_;EUmM%N2HWZ`qXv!dAFgpHIC#jxkU@T2 zH=m`as|$-YSXo**j%6U4_1xcHS&xA&4^Se^H>{n_9A2K*0> z2F%50Op2_8z_N=ouPGjX?mp)!2hD{kdWz57yz4h_u2gidK|$H-VcQp2_wbB^y@;{i z;%)IauRaS}BuYtMt$FWQs0U51c@MLbGk?EeS~TEFc`$GKELpwrf{ICP?cUYqNn`bq zn&?GnmvKKuyh5m?reUUt+-JPqxx_Y_nsGyYo8oxk)V@XM-Em7<1QW@rwSf&|02j z=}pMQ-FN9s-gl5L;=|YJYJVk0W3IPidRj0&2OCmx^6a~hLa_S8bjCm#BuI4Yk0P3F z_bl??$xiG#A<;i&OI07V=8e@aHFTI=MxR)B`fWBFf-&z+XZG{B43e7b(IU_0LOl8q z)i`<3%SWQX#7}W5_&77ON8a;tVwIlo#hWU^`99Y35ae@zi)+-aB-{t4(?o|ntJ|h| zk{vbR-0p9shv?mVo;lvBzL@0r!n}OO)ZwY@b)p<{=%5vQz)z&h)eGSVmqILD_B+IW zJ;km`lU+3JTwmDLv~yS4MeUn}ucy3XOp?8yD60Rdh0Xp!lx(SH8ZMtP@RzIxm(Lvd zOXk;va#9nntn!JkJ4!RJanj<@E9PL&Q}I#cE2sk5h2%2h~Nl z&LiU(1NDhEAp-2XRk(IKb*U{kWE^v#IdLjPfb-9!Fr3&y^;27nNP|Ox8btPx?4!GX zA{|DekM92KEWm{RRp*71*Iyj4FFUN8^zc&JS=vvw-0`Aak7fU*>uoTu%bi-5*1n8a zH))1imf@4FBDHL=tO?7j&R@GsX_4sTyZXpvk;`dk89&)xjThAmku_m^)tN}G;Glh( zux`??UGMe3#lH!W?xIGWc-2`(jiR$JJ4xWpiFYRgS0sPFx@{&c-Z8>_v6kV)@xz1r?T_F*&(93Kad#FSI$Qmy z>%(XI`NSLjBAIXWl&&Xxrb*4qT70svdDZWE{hr;%%;+U}i1bxii$uE`;Xco+)ThBU z`$eMO=&@Zl(DO)mwZ7liC2{Sl==Eg%G^tcsiwpKOwx2vZU(F|8?H5UUqxa7pSyEf` zA<|K@7Hsx4!k;{^Qj6*KizK|!6TF_RnI`r39gNhfs15D)y!vcD@pQk)dpDYm!D+H zBt_`9=~`C;eW{C_Td9i+lhPDlxmw2tE_QTEpYG&KOi!NrD0LQPqX%oK04D4D!)U5K zytvYm$K#XLJnM_fNAKIMJpOcJPo-v`u`AamHGTHQ^gYw*ca3L7v_;ueJPgwGaV9l~ zr%@RP-@orXbGEy*qKA7l-zv6r!qtX6*~agC@xJv^3UER8UE?Q3P-8Feo#c$ki}!67 z6waYPKlxOufF4*77qy&s-8SjjZvFv24jVw#7kgtKez?-Suk!xx8Ax5V!R^8WS6`o{ zxI>>!4{N^g)xZ7P)+P#m`*zC1ckoX~EneRS$T~mj7I5Kx4wN`O&~=x3GSiH^*UINO z?=aRdA_|Yz@7(rze_Z&;O3mmXrXgouylT{}xn$D_DS#1weX3JfmHK>1K5V4blr1Sy z|5N#cM+$aEklmS!QCCI`-gE_Cu-HtRFU!_Xrr6djiS>(oeWmy1YH~}GRFs$nn?a3m zmgiNK`9z;jzj1g!n=i}LPu6@U6?NKz?N-gw>Hdd0sZz=xJx6Z6(aXJ-%=hrOnmp(3 zYzWqzn9dyNfdoly_2_-IDT6-gnL-3aupNvBRbp8ivrqHoTx2h{f2Ko%O~H|?LWhhq12#X%Ke2gJ(=>Spq}abIbyF` z{)B&7)sIE~{}4v#Jio1~C<^FIaT2yEOL)?$ec>15>Pp-%b|U##{^|Xc|4XQv-v3|6 zeAV<%@Y$IOY`U}RY5xB$+|5`22siW9|9!ZcuTr7+Pf$1iusSzxI=Sl4kyJHJMd%;l zGdT0L$$0g$`G0`f?W*oIw^aPp1$6tvEb5y$)8e<~POUj;%npQg=QF0VvR^=p*sAGu zsJw{xJ$q{Hp2loxSho%1NV~ADKvFzJUt{z9Um3IQVcl_zsRHa5)J1Ir^*eS`;sk$w6YfKoGIT=ylX3$NNg3TC>!ctq<$=XH5O>c#u33ZTZgvzLi7>pIWof*yLnP zMYCPV{@&1l7xCNFhMH*1mWOo%zd541+`}7wq`$=YN}O7|tugyLtXq#UHJR;#w1}=)w1Z2!`cb)&;i?bPB{Sa&mHDwgd+gNSXQUdQf>DwPJghHd7Kg)%ZDfQ& zwz`;(__~BszCu?vMYzkPJC6o(C+b|VwMy(;Dy!44zWCfxrutE*oEiM}&Lds^kMSzc zPWhg`vU)ROI_Geo`cI_u3U?y(f-vjD-$(qVVj(Cbr#Fpfh-4~|< zyN)(IjKp4O0darHf6^70NYSn+zEl1%u;az{DYMydr&NZrhx{Ec2wkS3xh<(TRH|$z*2i*~xT~fbuZV3t|r&!la2*7F71#`1RQNmr?W|*td=q zT?2KX{QKV4PvR%+Wm!dh?{vnMBoCJBD8*kJ^0JE9-sylVNoz;0qyDbpK`kREt2op< zZBDKFzhTJ8Dx!O*RjAE5d>!?l80Tdb+k2;Zsm-BQ@UyYTd>th%tJu&xy{nP*|BV0M zH7MzwuA|n*bR8ujtN4G}I3uf=PyLc>BzaJq^KTiF-iqqqZyGDV8#$ed;iCBCX&HCy z-2Y&NisBEaWysjMqh59@{-=gHoz*|<;*@4s*|`VibZ%3d!I}0ijcRJxiL?weJ9n3y z&c9)Bq-7Y}xm)IR`cf<4FsCzKE&KCxok*@bi|0zqu(5NGrCyu}(LXcxUUqI%uLo;d zhPs{m-!l%IYayn)s{RG4tEPVgpV=9=2b`TAZhr>%8!tPnAB#4~IIb#}i#F6ctk%M) z2lwZDWm4BVYIFnRW_Xfe9qi;TLUGzIs;HAtyl>?NV7T&`L01=0G`W;cv^_YG|Tw1X?B_YjW*yHgHR&89%a_iB~wv?j{U(yHI-c zZ5Fp`$J}LY)(d{|eW6cSY&}or(Q@;3%w5uExS$l@7yLV^E_;%4m;m%qZzgkN(8Rz9 zk_=TMAI1W=)S5}$2s9BAL68afo#ZlD^_l&b@NYFB3{nYqek}d_3fD>x?*q5goA0b z3NXaMXskH4ikynq^jZ?CgdaUPW$MfPv)pJL{?#$KlKS#5+*=wDhYzgLj1D7CH2SSX zjk&*TiYujwWpw7Xi7MI-ZnbYSyJC<^K0oH>h3+Dc(Dve+nw;Qckinh zavA)V(qYaLAKf=M=i=n_d4EnyifB(YLez+;q@)L|DmIguvuI-XRRuC?qZC?>E-qQ} zc+xdYT3zz*ITq0NFx<`LzIj{VFfS5lZp4+$@egG$6}aDB9yB|mo-VXSEugcul;^wI zr$V;Ng2)wx^shI|5!? zs`cHRP$9cy{UTq~A@(tEVpYf>kAnjB*6OHo0sKhZ+ETmk=G5#VHNV@v?3?%ilSRhG z8%t>4O}q-(!{cDKm)Pc_3fU`*qJ$321U8_`t?(lyYfD4E-{l_z2)lm!@N?KR#mXFm znM`ZhO*MD!PZYjexqA;R{-d^dBit+hn;cZ|Ztw2BAn{^#j=^lEMFTAgEul>MOSxEZ z{>$>6yZ0dC#cCWz*-S8l@PYiMg{0h-=o*OyctP#&31D$Ixkdl1CM@%}9tU_qb?$6* zn#6a4iT0CNcw11J`zJ))QDp)8*Y3YAIT&p!;qbQLL+&@SP+U-+i;7nIg%lMRlzJ}) zoKatZ6_n&6qIbmqb5h2XTO4v4cJiZmB$ami9sgkX+31#;mNUnX=fUzd}%-E=!LLEYVe|vPLmBddFa4tEEVPUDP)V<>U z$$S)RW^&Ahu({U(iw1 zbw61CARWSqjQK2dJMK{6LG=&;WE@V1D71BK_q(b7Sotqf`b8;AEcF59TGb#@>_yhB znZk^b3B}=Q`pD1fu0XQujaJD+jA74EPRoP|l{>Mlo4y*EY+l#i&+ATTFI>D`nNaie zv-3fpgZ2mQUrD6~T-df9J=ss6TJvbZLE|LN0Bq zlPKior@Z>B(;DoDuAh8%>2&Z-nw*2ZaHzNH`^6j!)@47tAw9KPh|hZu z|FuJDq@yLEOD>mO>_Q{hWS1X!fXOJyl}6}e)q_g_;*TlEhLz8MZum+&ztU!JDKr+M zN6C4}D(P=Ga;1yk^qUm;y=rV{C`@|rZD#1(^74#Kb0W=sOV%~Nl%eK2{@D!+C1qe~ zy~o;M-&WF1P6Bxl(A9s{Ydb2iQAVS*z>M^7BZVzu$-8fzZrZ`(Xq!HQ!b-gjjU_2(LI#_`jW&Q(E?s)tv8mQpI1-nMU-CH3-J$kbe`m~lH8mDv(%xHc+KxtTpu4s%@7Q`IYzL_CZ?zXuE1 zFTyp5Z*RaeA(l#C-BWDgy2k}?9lAHxJjy?~ z`R?MQ;t+0_b(>QA=BEvAXW-hbN@Kc7WChomE?u)rvp!`^S;Zk@FkGkj-=-dS9lLy6 zDi^r%gYxZQDY&%3PP=`PA*W)!$p%}O*d3`BrV=A0%#i57QD;i`d%9~n&9r>mE?J}Y zIFWgaZkHzTK*M9JMrj=9H#30F3TaH__~QY1Le>C^LQz+O55LdZQpr$NQYeHfA99Fy_bY&@bE}U!p zIr8U1_~8uI8o8iJP&d0u)=ipMX7MiO#?<%qAiWHY;4r9iCD>b@wJQIht~?wTvRH(x z5wC(X!C@XwXcT*OIzxLt;n>$Uup!ZmW7mkT!4L`h`xIY*uf+P-t*xu@kJjE;%*FV; zWx^DNR2Jdhiu=I+hg3-?Xw^A|yzsTyTqk)@9=7i+keS&~w#jfC%sDGnRZCI3T>?5Q zXMdVo=KMcCxT^)n@92PH1>Oj?x;E@Z+KShqi1>SweMokA)JnO^8{xwYL@SP6W4e7q zWRT(SDSp^8Ln099zj1}WJs&GUPgnJhNvb%68HQ^T|8LNbAH%&I_vh3I7mgmKr>QDq zf)|HKz;GYM{}olzAs!33Or%3{9<(|dU~W#wX^d<&bamtSQ<^EXbw~{k4}rmO3qO}^ z-|&jX32lYom_wuwAx{39#88AbOyVy_2D&-!r}Q~D^YU|=AhnEK6FAIm@mx`~=a1=p zNlb|fFW_XY$ksLho+!(&cz(L7i3$ELgt-_;BT?0ex`lol=EEPg#6O`}U#IP2r&v)E zvJA5(iw`51E|!G!z^ui@hohLhb3-5n)|^Vr=eOTQd~Q@eQrG{-tUo@&UYB-C_S}s> zW?f#dc-LK>1nJClCxNk<{Ci-7Q0Ayg;VAMdPz!$ZQ~uAFqzY>~Jxg?(@fj)P`-p zyVh&Oc$$`3H&gx0m14G=^h%QX5@G!uP4i5Xo~^tF(dWj|kN3L1GEMq~yVhwaSf1i7 zNtwFJxFb$`t!ZUlZ=YF9hzwt2thgQWo$@XojrBUzt`ug&*Hp?fc@OGZd_`gK)Ia3u>3i*& zj@t6&45|ZW!)NBdfkgt*FJtcC+UM|WD}-GUsFh!62t_G)dCg7XI`$C$o<5Eq zj{a_|`L9xmGEC1%)LblE{Ra?#a@Kfx2b3|{x=AF(l~L53 zT8K&|*x^ZN>UwGZfVS5u?mfqLXNZrl^H;r|i$UR?1Bg>HI$<{wn zkHbLlW){L*rEJ%h>LDP+1y@(o?7qqFUaTA(=zGwH|A>F6c|X znllORy!8ilN)&G&q<_s9`YHCZef!JfcxmLep6ec4M#DjTiQ=cjhp#FB;(c#(bM*Y_ zWv*x5-(}U$pUXddgUqEl?vv|>kGh^@=k1vN)m?i?P2#p{b7()%K)WFJX~ zatv7;<%OAJ$q^Xz6}I>)a-%5;TB!q$RB&;VwWZkEU?@JKdzzu z%=dET2QP*K<$qHeIq;F?ruXAA+Gl((mwtH2a9a7&AEk52%-u6I`@$!Q1~fDQe7MEN zyHe+#GwaXL+^PNn$e^IyIC22R;_CgloHm0Gw?vhylp6aE#Im@0KF*^x=f&ZEU|>*C zXha@hVR3bR97XyJa zasY9J==>N&8vwwK{eY$auSj(~xPc!^=zZiGVZo_}){i*uL74x|lQ=yF(y9P(BR`<& zeJ(bZAILgVyv8uNO}n@o?6ubzAbu{p$?5jF^yB(GbZc730Jqp_^s`gv9yUI^bYZJwIkzXuKcn3sJZK!AVH51s(C>ya_;6gUtT1?*81sOonxxebGJ0( z1o!vOmN5zRGl~vPIBG>HLMD(1IW~E>a zN8j5>7p;F!nq@pjiJmjoY!KYx=qrf~)LNIwwfdbjNGr4!)3Gafp&_zcT5#W5G8cTT zKBkyKo9ZBcPJk?QsCn7mKUa2+YeX_;>4laNy^us`!gFNDM{C=M=gKZ{nQ%W@x}&pM z_$}HH*->O|Yk00qoXdpcNimbQr!tkM8fY2O3Bf`VCh8&)I_s*rgkzAnIe$&8kX}fF z2(ly5+V<+X-2G#exVa$BeW4wJzWvBOoptp;NbVPnb#+qmf-O+lm4UX&6Soa;qy{gpXjkoMYZ?{p3l;KBKGglut2db zH6)2K>pIaX1jw$EjvG0M79Ex8%le(mzL zy(=M5@sqU9&dfhVTVCZ0v3%U^u}^Gt+De6{h7;TdI;tExw}3xmq@>^L=bovsR8;D{ zNTU^zsqDW%mdMmUfNdA~1|9wOgZ<}`p8Dtb*#91-{u!klSUZml&_5@@-rauiFKDS^ z2)d4e{X9}r|J*Tl{g#9OtCZTvwd36_2W8G9_4UuOv;RWV^B^qcV#t=O=N#F((+-x4 zB8#t{Gjk|^%8Z|j(r}8DEEU>px%8wZI3-fZ?P_<69Ne@U2PDdDaqk`uq*o8kMxuXf z{xp~HyQzhLn14FG@Lj~Vg)@3gg;l#XjVs)D$v7u}BLyJV{gi#S?LU;i+B{)QnhNW5 zYnoQL@1Ai^@kR=-n0_p~XggI_3@O1$Y%w8zIrQ%>wTf;&VD~SLsvmB#bbL@ES6Z1i zY<7L=wdm$;cK^bt`p+$K1|oq0;$NrkL{&l(kS@h04<}z+((C!hNYHM%P0jE@ws@(*^Wpq!OLs&z3)#qbqaXz> zYIh$9h?lZHABJ9AQWn|FWFy~*g5Rpqif(Ut1Co*^FZ&>qJrV6cerV0@ts6H$7gdtv6p%x7`;j z-A@|czq+(9ylKEj7K@@Jwd`GeU?p5CojA;Sbty)8Q;Ur(7)6P13DkXn6)XiM3|Hzd znF()7vXM_jL1J1ET0hIh&0>R-?2E)GudNoPU0ws0NN3%7xVQO6zVYO`c$VdneB+6M z&2{$Wd9l%cgZKH_b_VKw8G*Tq6ittvsM&S)o_Vq9b$0h1Mny_kMxe$G^+|(Y0nN+r zjJ1>tU5yjvs65&#sp-aiD=^)1yXVA=yxDtIiof1cr0V&jLT)ETzv!B?$&?-)$YsEW z5|AXEKT&myKY$hSJM*zLj(Lj)@#6vhSOUjXMf2m~NY!uBhD#&pw+Sil_X!h`{?XGi z6(P|Nez*hI$3CC`aG~Dl&Cthn(^O0Jd3NSLVycluzr#b*xB9T>_8YvN$=(9t0rvX| zn*#qb^A@ltCHx~JBzW`N<4Z;MU+kK#Iu{!2?MZG|PGb{;sAR)oNZ~UqkDpJ0nl|Pd z7yp|;V!<%m0cg^WJl97tD46&4jS2=W`%V%Xzm@;RE zV>I3!l{|bRF}$zo6V0L4kgS6s9}KZ>(zkgn0)GSz__p2EZw0RSZ>jiknW2)|>+=6n z=Eo92UH?r@IuotLmOo8A&5nml&eydO{|PZ|c05udS2sxfCq$`v@o~1<7mH^azAi8FG=id{$4uOmC0u~5%cd8U&wM);XJkGv zFL(DgLdCj!BSSbU%fEQjf9Adkyp(ys>l*=Gs^>t+*I|f$&Htyh>kVq^%A?)wSlVSV zc5R7;5vOZQxZo91 z0~A6?GN33Cfkhw@cu7o1NKM=q0>T4cUb3Ov&eXN*%+BoGbI&{X%=>WXcklglXYO$Z z$(|6^w)!o@S;gT4+fo~~b9-u!$`i!jTXSu3Z#3_a`{_mw?}E8PL!}+ew?t+I_Vs?yc#fGe8+`MmE%p0t zaG2LO`4^gP}(M1z?l(!WMO%6o=TnHNO* zPm*?;KW;`8TqKd8`r_&=qIb=EM6R$p*R0uVmtW8ub}s)L%)Hs0+aNVjO&+sxP++X2RQ3QPI6 zwcn&j@6o@+5u0;wk2@u&r^=6K?-j=QFQe%iwTgSfJb0T=AYeW(aIwNRH4G!S^+g>N z;fpqKre~(T!ReZqWGoXK)9(16sZi%0B-A-1Fq3|Dz4~ZjLmP1!y!wiOAvNBgm`YGh zOiabbsT3+zdnQ3k)y_ze?|R9#!qGUwwd#s1D+8siD+9%MimtbEN4@K64}3g7h*sVu zz}o^9-f;Wi zDQuleLM3o3!wy}nN~AY1#-K&>IRmCx0C>L&80^|cd0D}t!fB@+%Wqf6q=c)F)m?N_ zL87yDz_A?Xv;E>iiFzn0(OGh#i`5B{oRd_2==egiphzJ2t&PO}=i&LAwVA#gx9&h@ z>Z!GhyTanXStAomnw1EjfT@hZ=ql)%c7KXMCaSAl;2uc@aI2r|Qu%!qdQXKi*z_X@BnI+k=inlutI+J{0n=vB;7fPT?dkBPy?k z*&?ps$g>-m{>%oQmff&L@28eA?T4$>M!v+6J7}SEyK0zfMH5qfrFuE8UMBX_YK_A= z@=IjhnD$IuDh-$C%*tgzSw2{=p$U7BWodf^Z1U6{h00hP~pDI;abz7_^%qQSRTBLBKT+u#f%`4b?%As+;=x74faqJvwCl&!!B1Bz#T@X_>gH2#L)Dh%_Hc577aYES-OJ5YIu6VCuF}e;5{BE zR^^*9ZrCXgfnNw30`Fph6YiX@4V)0LgT>{$dER%!@}CW+Vw7D7jXnZ4yrf+6&- z1f=-J27*aMMN>&Vq7)p*s^|D zN$K|8y$w9RW0`gdEu+vhDiW^R~DvfXB`5<@yZLz8tD)Pn?Ibi9v1 zfh5u{%;2~unQdAMvSUq4ml4rC@wjn*QDt?>*lJeQI4gv7R`^GRT+X4Ybq>4wqpKq2Yu* zQKBTQyD<>8?c|Lu7?yVe6C8Uw@}WNMgk>0?#rAej@zCYITRY*EdC1`$ijvZcWbsa6 zMWl{|Hh3;aEBEoKvHG;A;psciC^@-Hp z9CloDWB{GxLp6o3(iJxP@ex%itEY|vWy2so)G$3iI4wrNNI14|w_wN`CLuk(KMh?J z^G~qx_2A~hlS$$5Y?}Ub5_dTk{zt7cT2YP-qoth%%VHPGZiCC(2IZq6GSm}0aZ1d0 zUx5A;$^Ftn_G;=35R_R%ZwdhkGgNW6tMIbG>@6Z`Ks(WndrpR!k9I KOwPKpd;bC>3tJ=r diff --git a/libraries/tcpdf/fonts/dejavusansb.ctg.z b/libraries/tcpdf/fonts/dejavusansb.ctg.z deleted file mode 100644 index 71cef637e83311b26f0d4325c39b137930335918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10200 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,'FontBBox'=>'[-1069 -415 1975 1174]','ItalicAngle'=>0,'Ascent'=>928,'Descent'=>-236,'Leading'=>0,'CapHeight'=>729,'XHeight'=>547,'StemV'=>60,'StemH'=>26,'AvgWidth'=>573,'MaxWidth'=>2016,'MissingWidth'=>600); -$cbbox=array(0=>array(50,-177,550,705),33=>array(140,0,316,729),34=>array(95,458,426,729),35=>array(68,0,770,718),36=>array(78,-147,628,760),37=>array(32,-14,970,742),38=>array(60,-14,830,742),39=>array(95,458,211,729),40=>array(86,-132,377,759),41=>array(80,-132,371,759),42=>array(20,278,503,742),43=>array(106,0,732,627),44=>array(53,-142,278,189),45=>array(54,217,361,359),46=>array(102,0,278,189),47=>array(0,-93,365,729),48=>array(48,-14,648,742),49=>array(113,0,627,729),50=>array(79,0,609,742),51=>array(67,-14,616,742),52=>array(45,0,650,729),53=>array(77,-14,626,729),54=>array(62,-14,642,741),55=>array(67,0,616,729),56=>array(61,-14,634,742),57=>array(52,-14,632,741),58=>array(112,0,288,547),59=>array(63,-142,288,547),60=>array(106,30,732,597),61=>array(106,144,732,482),62=>array(106,30,732,597),63=>array(69,0,515,742),64=>array(66,-174,929,703),65=>array(5,0,769,729),66=>array(92,0,692,729),67=>array(50,-14,670,742),68=>array(92,0,778,729),69=>array(92,0,610,729),70=>array(92,0,599,729),71=>array(50,-14,747,742),72=>array(92,0,745,729),73=>array(92,0,280,729),74=>array(-56,-200,280,729),75=>array(92,0,805,729),76=>array(92,0,610,729),77=>array(92,0,903,729),78=>array(92,0,745,729),79=>array(50,-14,800,742),80=>array(92,0,692,729),81=>array(50,-146,800,742),82=>array(92,0,750,729),83=>array(72,-14,647,742),84=>array(5,0,677,729),85=>array(92,-14,720,729),86=>array(5,0,769,729),87=>array(30,0,1072,729),88=>array(19,0,751,729),89=>array(-10,0,734,729),90=>array(45,0,680,729),91=>array(86,-132,389,760),92=>array(0,-93,365,729),93=>array(68,-132,371,760),94=>array(101,457,737,729),95=>array(0,-236,500,-143),96=>array(46,616,322,800),97=>array(43,-14,596,560),98=>array(84,-14,671,760),99=>array(43,-14,526,560),100=>array(45,-14,632,760),101=>array(43,-14,630,560),102=>array(19,0,444,760),103=>array(45,-216,632,559),104=>array(84,0,634,760),105=>array(84,0,259,760),106=>array(-33,-216,259,760),107=>array(84,0,684,760),108=>array(84,0,259,760),109=>array(83,0,963,560),110=>array(84,0,634,560),111=>array(43,-14,644,560),112=>array(84,-208,671,560),113=>array(45,-208,632,559),114=>array(84,0,490,560),115=>array(52,-14,548,560),116=>array(13,0,455,702),117=>array(78,-14,628,547),118=>array(15,0,637,547),119=>array(35,0,889,547),120=>array(15,0,630,547),121=>array(12,-216,634,547),122=>array(45,0,534,547),123=>array(125,-163,587,760),124=>array(127,-236,238,764),125=>array(125,-163,587,760),126=>array(106,212,732,415),161=>array(140,0,316,729),162=>array(85,-153,567,699),163=>array(61,0,613,742),164=>array(36,30,601,596),165=>array(12,0,684,729),166=>array(127,-171,238,699),167=>array(7,-95,496,742),168=>array(96,654,404,774),169=>array(138,0,862,725),170=>array(77,182,489,742),171=>array(77,67,552,519),172=>array(106,140,732,444),173=>array(54,217,361,359),174=>array(138,0,862,725),175=>array(96,668,404,760),176=>array(87,424,412,749),177=>array(106,0,732,627),178=>array(53,326,382,742),179=>array(44,319,384,742),180=>array(178,616,454,800),181=>array(85,-209,704,547),182=>array(63,-96,549,729),183=>array(102,253,278,442),184=>array(128,-196,349,0),185=>array(60,326,382,734),186=>array(57,182,507,742),187=>array(94,67,569,519),188=>array(49,-14,957,742),189=>array(49,-14,987,742),190=>array(51,-14,957,742),191=>array(69,-14,515,729),192=>array(5,0,769,927),193=>array(5,0,769,927),194=>array(5,0,769,927),195=>array(5,0,769,931),196=>array(5,0,769,927),197=>array(5,0,769,928),198=>array(0,0,1012,729),199=>array(50,-196,670,742),200=>array(92,0,610,927),201=>array(92,0,610,927),202=>array(92,0,610,927),203=>array(92,0,610,927),204=>array(11,0,280,927),205=>array(92,0,337,927),206=>array(1,0,370,927),207=>array(32,0,339,927),208=>array(16,0,787,729),209=>array(92,0,745,928),210=>array(50,-14,800,927),211=>array(50,-14,800,927),212=>array(50,-14,800,927),213=>array(50,-14,800,928),214=>array(50,-14,800,927),215=>array(125,20,713,607),216=>array(22,-36,823,765),217=>array(92,-14,720,927),218=>array(92,-14,720,927),219=>array(92,-14,720,927),220=>array(92,-14,720,927),221=>array(-10,0,734,927),222=>array(92,0,692,729),223=>array(84,-14,676,760),224=>array(43,-14,596,800),225=>array(43,-14,596,800),226=>array(43,-14,596,800),227=>array(43,-14,596,778),228=>array(43,-14,596,774),229=>array(43,-14,596,888),230=>array(43,-14,1000,560),231=>array(43,-196,526,560),232=>array(43,-14,630,800),233=>array(43,-14,630,800),234=>array(43,-14,630,800),235=>array(43,-14,630,774),236=>array(-21,0,259,800),237=>array(84,0,387,800),238=>array(-13,0,355,800),239=>array(17,0,325,774),240=>array(43,-14,644,760),241=>array(84,0,634,778),242=>array(43,-14,644,800),243=>array(43,-14,644,800),244=>array(43,-14,644,800),245=>array(43,-14,644,778),246=>array(43,-14,644,774),247=>array(106,42,732,585),248=>array(38,-46,645,594),249=>array(78,-14,628,800),250=>array(78,-14,628,800),251=>array(78,-14,628,800),252=>array(78,-14,628,774),253=>array(12,-216,634,800),254=>array(84,-208,671,760),255=>array(12,-216,634,774),256=>array(5,0,769,914),257=>array(43,-14,596,763),258=>array(5,0,769,935),259=>array(43,-14,596,780),260=>array(5,-196,769,729),261=>array(43,-196,596,560),262=>array(50,-14,670,927),263=>array(43,-14,557,800),264=>array(50,-14,670,927),265=>array(43,-14,542,800),266=>array(50,-14,670,927),267=>array(43,-14,526,760),268=>array(50,-14,670,927),269=>array(43,-14,537,800),270=>array(92,0,778,927),271=>array(45,-14,871,760),272=>array(16,0,787,729),273=>array(45,-14,707,760),274=>array(92,0,610,914),275=>array(43,-14,630,763),276=>array(92,0,610,927),277=>array(43,-14,630,784),278=>array(92,0,610,927),279=>array(43,-14,630,760),280=>array(92,-196,610,729),281=>array(43,-196,630,560),282=>array(92,0,610,927),283=>array(43,-14,630,800),284=>array(50,-14,747,927),285=>array(45,-216,632,800),286=>array(50,-14,747,927),287=>array(45,-216,632,784),288=>array(50,-14,747,927),289=>array(45,-216,632,760),290=>array(50,-224,747,742),291=>array(45,-216,632,765),292=>array(92,0,745,927),293=>array(-9,0,634,927),294=>array(92,0,882,729),295=>array(81,0,709,760),296=>array(16,0,355,928),297=>array(1,0,341,778),298=>array(32,0,339,914),299=>array(18,0,325,763),300=>array(21,0,350,927),301=>array(7,0,335,784),302=>array(92,-196,366,729),303=>array(84,-196,345,760),304=>array(92,0,280,927),305=>array(84,0,259,547),306=>array(92,-200,651,729),307=>array(84,-216,602,760),308=>array(-56,-200,370,927),309=>array(-33,-216,355,800),310=>array(92,-209,805,729),311=>array(84,-209,684,760),312=>array(84,0,684,547),313=>array(92,0,610,928),314=>array(84,0,357,928),315=>array(92,-209,610,729),316=>array(71,-209,273,760),317=>array(92,0,610,729),318=>array(84,0,479,760),319=>array(92,0,610,729),320=>array(84,0,484,760),321=>array(-45,0,615,729),322=>array(-18,0,390,760),323=>array(92,0,745,928),324=>array(84,0,634,803),325=>array(92,-209,745,729),326=>array(84,-209,634,560),327=>array(92,0,745,927),328=>array(84,0,634,800),329=>array(51,0,891,729),330=>array(84,-200,730,742),331=>array(84,-216,634,560),332=>array(50,-14,800,914),333=>array(43,-14,644,763),334=>array(50,-14,800,927),335=>array(43,-14,644,787),336=>array(50,-14,800,927),337=>array(43,-14,644,800),338=>array(50,-1,1094,730),339=>array(43,-14,1046,560),340=>array(92,0,750,928),341=>array(84,0,515,803),342=>array(92,-209,750,729),343=>array(71,-209,490,560),344=>array(92,0,750,927),345=>array(84,0,490,800),346=>array(72,-14,647,928),347=>array(52,-14,548,803),348=>array(72,-14,647,927),349=>array(52,-14,548,800),350=>array(72,-196,647,742),351=>array(52,-196,548,560),352=>array(72,-14,647,927),353=>array(52,-14,548,800),354=>array(5,-196,677,729),355=>array(13,-196,455,702),356=>array(5,0,677,930),357=>array(13,0,507,814),358=>array(5,0,677,729),359=>array(13,0,455,702),360=>array(92,-14,720,928),361=>array(78,-14,628,778),362=>array(92,-14,720,914),363=>array(78,-14,628,763),364=>array(92,-14,720,927),365=>array(78,-14,628,784),366=>array(92,-14,720,929),367=>array(78,-14,628,881),368=>array(92,-14,720,927),369=>array(78,-14,628,800),370=>array(92,-196,720,729),371=>array(78,-196,716,547),372=>array(30,0,1072,931),373=>array(35,0,889,800),374=>array(-10,0,734,931),375=>array(12,-216,634,800),376=>array(-10,0,734,927),377=>array(45,0,680,928),378=>array(45,0,534,803),379=>array(45,0,680,929),380=>array(45,0,534,760),381=>array(45,0,680,927),382=>array(45,0,534,800),383=>array(19,0,444,760),384=>array(9,-14,671,760),385=>array(-68,0,741,729),386=>array(92,0,692,729),387=>array(84,-14,671,760),388=>array(40,0,731,729),389=>array(25,-14,696,760),390=>array(50,-14,670,742),391=>array(50,-14,818,924),392=>array(43,-14,643,724),393=>array(16,0,787,729),394=>array(-68,0,827,729),395=>array(70,0,669,729),396=>array(45,-14,632,760),397=>array(43,-222,645,560),398=>array(92,0,610,729),399=>array(51,-14,800,742),400=>array(67,-14,616,742),401=>array(-56,-200,599,729),402=>array(-57,-208,444,760),403=>array(50,-14,868,924),404=>array(2,-211,793,730),405=>array(84,0,1000,760),406=>array(92,0,428,729),407=>array(5,0,384,729),408=>array(92,0,805,742),409=>array(84,0,684,760),410=>array(5,0,355,760),411=>array(-11,0,562,760),412=>array(83,-13,963,729),413=>array(-56,-200,745,729),414=>array(84,-208,634,560),415=>array(50,-14,800,742),416=>array(53,-14,854,761),417=>array(46,-14,708,609),418=>array(50,-14,1007,742),419=>array(43,-216,826,560),420=>array(-68,0,741,729),421=>array(84,-208,671,760),422=>array(92,-146,760,729),423=>array(26,-14,601,742),424=>array(15,-14,511,560),425=>array(92,0,610,729),426=>array(-31,-217,561,760),427=>array(13,-216,455,702),428=>array(15,0,701,729),429=>array(13,0,455,760),430=>array(5,-200,677,729),431=>array(91,-14,833,761),432=>array(75,-14,733,609),433=>array(27,-14,823,728),434=>array(92,0,772,729),435=>array(-10,0,796,742),436=>array(12,-216,778,560),437=>array(45,0,680,729),438=>array(45,0,534,547),439=>array(72,-33,728,729),440=>array(41,-33,696,729),441=>array(37,-215,586,547),442=>array(57,-208,534,547),443=>array(79,0,609,742),444=>array(41,-33,728,729),445=>array(37,-215,586,547),446=>array(36,-15,525,702),447=>array(84,-208,671,560),448=>array(92,-208,280,729),449=>array(92,-208,566,729),450=>array(5,-208,536,729),451=>array(99,0,274,729),452=>array(92,0,1510,927),453=>array(92,0,1364,800),454=>array(45,-14,1250,800),455=>array(92,-200,917,729),456=>array(92,-216,896,760),457=>array(84,-216,602,760),458=>array(92,-200,1117,729),459=>array(92,-216,1096,760),460=>array(84,-216,971,760),461=>array(5,0,769,927),462=>array(43,-14,596,800),463=>array(3,0,371,927),464=>array(2,0,370,800),465=>array(50,-14,800,927),466=>array(43,-14,644,800),467=>array(92,-14,720,927),468=>array(78,-14,628,800),469=>array(92,-14,720,1040),470=>array(78,-14,628,914),471=>array(92,-14,720,1114),472=>array(78,-14,628,917),473=>array(92,-14,720,1114),474=>array(78,-14,628,917),475=>array(92,-14,720,1114),476=>array(78,-14,628,917),477=>array(43,-14,630,560),478=>array(5,0,769,1040),479=>array(43,-14,596,914),480=>array(5,0,769,1042),481=>array(43,-14,596,914),482=>array(0,0,1012,914),483=>array(43,-14,1000,758),484=>array(50,-14,792,742),485=>array(45,-216,674,559),486=>array(50,-14,747,927),487=>array(45,-216,632,800),488=>array(92,0,805,927),489=>array(-5,0,684,927),490=>array(50,-196,800,742),491=>array(43,-196,644,560),492=>array(50,-196,800,914),493=>array(43,-196,644,763),494=>array(72,-33,728,927),495=>array(43,-215,593,793),496=>array(-33,-216,359,800),497=>array(92,0,1510,729),498=>array(92,0,1364,729),499=>array(45,-14,1250,760),500=>array(50,-14,747,928),501=>array(45,-216,632,800),502=>array(92,-14,1186,729),503=>array(92,-208,737,742),504=>array(92,0,745,927),505=>array(84,0,634,800),506=>array(5,0,769,931),507=>array(43,-14,708,931),508=>array(0,0,1012,927),509=>array(43,-14,1000,800),510=>array(22,-36,823,927),511=>array(38,-46,645,800),512=>array(5,0,769,928),513=>array(43,-14,596,800),514=>array(5,0,769,923),515=>array(43,-14,596,784),516=>array(92,0,610,928),517=>array(43,-14,630,800),518=>array(92,0,610,923),519=>array(43,-14,630,784),520=>array(-41,0,377,928),521=>array(-3,0,381,800),522=>array(23,0,351,923),523=>array(7,0,335,784),524=>array(50,-14,800,928),525=>array(43,-14,644,800),526=>array(50,-14,800,923),527=>array(43,-14,644,784),528=>array(92,0,750,928),529=>array(58,0,490,800),530=>array(92,0,750,923),531=>array(84,0,490,784),532=>array(92,-14,720,928),533=>array(78,-14,628,800),534=>array(92,-14,720,923),535=>array(78,-14,628,784),536=>array(72,-239,647,742),537=>array(52,-239,548,560),538=>array(5,-239,677,729),539=>array(13,-239,455,702),540=>array(67,-210,616,742),541=>array(49,-211,544,560),542=>array(92,0,745,927),543=>array(-12,0,634,927),544=>array(84,-208,730,742),545=>array(45,-75,822,760),546=>array(61,-14,748,742),547=>array(43,-14,616,646),548=>array(45,-216,680,729),549=>array(45,-216,534,547),550=>array(5,0,769,927),551=>array(43,-14,596,760),552=>array(92,-192,610,729),553=>array(43,-196,630,560),554=>array(50,-14,800,1040),555=>array(43,-14,644,914),556=>array(50,-14,800,1040),557=>array(43,-14,644,898),558=>array(50,-14,800,927),559=>array(43,-14,644,760),560=>array(50,-14,800,1042),561=>array(43,-14,644,914),562=>array(-10,0,734,914),563=>array(12,-216,634,763),564=>array(84,-75,449,760),565=>array(84,-75,824,560),566=>array(13,-76,469,702),567=>array(-33,-216,259,547),568=>array(45,-14,1043,760),569=>array(45,-208,1043,560),570=>array(-14,-36,788,765),571=>array(-34,-36,768,765),572=>array(-7,-46,600,594),573=>array(-1,0,610,729),574=>array(-60,-36,742,765),575=>array(52,-240,595,560),576=>array(45,-240,595,547),577=>array(40,0,741,729),578=>array(42,0,573,560),579=>array(6,0,692,729),580=>array(23,-14,789,729),581=>array(5,0,769,729),582=>array(92,-93,610,822),583=>array(43,-93,630,640),584=>array(-56,-200,360,729),585=>array(-33,-216,360,760),586=>array(48,-200,927,741),587=>array(45,-216,800,560),588=>array(6,0,750,729),589=>array(-21,0,490,560),590=>array(-10,0,734,729),591=>array(-4,-216,656,547),592=>array(78,-14,631,560),593=>array(45,-14,632,560),594=>array(84,-14,671,560),595=>array(84,-14,671,760),596=>array(43,-14,526,560),597=>array(43,-69,526,560),598=>array(45,-216,750,760),599=>array(45,-14,801,760),600=>array(43,-14,630,560),601=>array(43,-14,630,560),602=>array(59,-14,885,560),603=>array(54,-14,493,560),604=>array(54,-14,493,560),605=>array(54,-14,769,560),606=>array(54,-14,665,560),607=>array(-33,-216,360,547),608=>array(45,-216,801,760),609=>array(45,-216,632,547),610=>array(43,-14,545,546),611=>array(25,-211,619,547),612=>array(25,-21,619,547),613=>array(78,-214,628,547),614=>array(84,0,634,760),615=>array(84,-216,634,760),616=>array(84,0,461,760),617=>array(83,0,356,547),618=>array(84,0,461,547),619=>array(84,0,475,760),620=>array(84,0,609,760),621=>array(85,-216,429,760),622=>array(84,-215,793,760),623=>array(79,-14,959,546),624=>array(79,-209,959,546),625=>array(83,-216,964,560),626=>array(-33,-216,634,560),627=>array(84,-216,802,560),628=>array(84,0,623,547),629=>array(43,-14,644,560),630=>array(43,-1,826,547),631=>array(51,0,630,574),632=>array(60,-208,729,760),633=>array(84,-13,490,547),634=>array(84,-13,490,760),635=>array(84,-216,659,547),636=>array(84,-208,490,560),637=>array(83,-216,490,560),638=>array(84,0,530,547),639=>array(84,0,530,547),640=>array(52,0,590,547),641=>array(52,0,590,547),642=>array(52,-216,548,560),643=>array(-33,-216,431,760),644=>array(-11,-216,444,760),645=>array(84,-216,539,560),646=>array(-31,-217,561,760),647=>array(13,-155,455,547),648=>array(13,-216,455,702),649=>array(84,-14,836,547),650=>array(79,-14,693,547),651=>array(83,0,625,547),652=>array(15,0,637,547),653=>array(35,0,889,547),654=>array(12,0,634,763),655=>array(64,0,660,547),656=>array(45,-216,703,547),657=>array(45,-69,617,547),658=>array(43,-215,593,547),659=>array(57,-215,593,547),660=>array(36,0,525,759),661=>array(36,0,525,759),662=>array(36,0,525,759),663=>array(36,-208,525,759),664=>array(50,-14,800,742),665=>array(84,0,589,547),666=>array(54,-14,665,560),667=>array(43,0,693,760),668=>array(84,0,607,547),669=>array(-170,-216,341,760),670=>array(84,-213,684,547),671=>array(84,0,499,547),672=>array(45,-208,801,760),673=>array(36,0,525,759),674=>array(36,0,525,759),675=>array(45,-14,1108,760),676=>array(45,-215,1167,760),677=>array(45,-55,1107,760),678=>array(13,0,928,702),679=>array(13,-216,777,760),680=>array(13,-69,881,702),681=>array(19,-216,979,760),682=>array(84,0,815,760),683=>array(84,0,732,760),684=>array(22,0,569,641),685=>array(22,86,345,641),686=>array(-89,-214,629,760),687=>array(-89,-216,797,760),688=>array(54,326,406,751),689=>array(54,326,406,751),690=>array(-21,205,166,751),691=>array(54,326,314,640),692=>array(54,319,314,632),693=>array(54,205,421,632),694=>array(14,326,358,632),695=>array(22,326,569,632),696=>array(8,205,406,632),697=>array(78,557,218,800),698=>array(78,557,437,800),699=>array(103,418,318,729),700=>array(63,418,278,729),701=>array(124,616,296,856),702=>array(116,481,255,760),703=>array(116,481,255,760),704=>array(23,326,336,751),705=>array(23,326,336,751),706=>array(130,517,370,843),707=>array(130,517,370,843),708=>array(87,561,413,800),709=>array(87,561,413,800),710=>array(66,616,434,800),711=>array(66,616,434,800),712=>array(107,488,199,759),713=>array(96,668,404,760),714=>array(178,616,454,800),715=>array(46,616,322,800),716=>array(107,-81,199,190),717=>array(96,-184,404,-92),718=>array(46,-236,322,-52),719=>array(178,-236,454,-52),720=>array(45,0,246,547),721=>array(45,361,246,547),722=>array(116,269,255,547),723=>array(116,269,255,547),724=>array(138,238,357,458),725=>array(141,238,360,458),726=>array(54,119,362,427),727=>array(54,229,274,317),728=>array(86,639,414,784),729=>array(183,654,317,774),730=>array(111,610,389,888),731=>array(167,-196,376,0),732=>array(80,638,420,778),733=>array(94,616,479,800),734=>array(0,213,360,524),735=>array(111,616,387,800),736=>array(16,208,390,633),737=>array(54,326,166,751),738=>array(33,318,351,640),739=>array(10,326,403,632),740=>array(23,326,336,751),741=>array(96,0,404,693),742=>array(96,0,404,693),743=>array(96,0,404,693),744=>array(96,0,404,693),745=>array(96,0,404,693),748=>array(88,-260,414,-21),749=>array(96,605,404,822),750=>array(92,418,554,729),755=>array(111,-240,389,38),759=>array(80,-196,420,-84),768=>array(-455,616,-179,800),769=>array(-326,616,-50,800),770=>array(-435,616,-67,800),771=>array(-424,638,-84,778),772=>array(-405,668,-97,760),773=>array(-500,663,0,755),774=>array(-409,639,-81,784),775=>array(-338,617,-164,760),776=>array(-402,654,-94,774),777=>array(-370,616,-122,843),778=>array(-390,610,-112,888),779=>array(-404,616,-19,800),780=>array(-435,616,-67,800),781=>array(-297,615,-205,832),782=>array(-390,615,-113,832),783=>array(-484,616,-100,800),784=>array(-409,639,-81,882),785=>array(-409,639,-81,784),786=>array(-271,418,-69,563),787=>array(-266,595,-132,844),788=>array(-266,595,-132,844),789=>array(-89,616,89,800),790=>array(-455,-276,-179,-93),791=>array(-326,-276,-50,-93),792=>array(-380,-240,-211,-6),793=>array(-295,-240,-126,-6),794=>array(-224,658,47,929),795=>array(-175,400,21,609),796=>array(-331,-240,-216,-11),797=>array(-386,-240,-115,-59),798=>array(-389,-240,-118,-59),799=>array(-370,-240,-136,-6),800=>array(-389,-202,-118,-110),801=>array(-423,-216,-79,117),802=>array(-419,-216,-75,117),803=>array(-338,-212,-164,-70),804=>array(-402,-212,-94,-92),805=>array(-365,-240,-135,-11),806=>array(-327,-239,-125,-93),807=>array(-372,-196,-151,0),808=>array(-333,-196,-124,0),809=>array(-297,-240,-205,-47),810=>array(-405,-237,-97,-54),811=>array(-450,-239,-51,-94),812=>array(-435,-240,-67,-57),813=>array(-435,-240,-67,-57),814=>array(-409,-239,-81,-94),815=>array(-409,-240,-81,-95),816=>array(-424,-234,-84,-94),817=>array(-405,-184,-97,-92),818=>array(-500,-236,0,-143),819=>array(-500,-236,0,-9),820=>array(-625,212,1,415),821=>array(-471,214,-94,309),822=>array(-837,214,-86,309),823=>array(-655,-46,-48,594),824=>array(-825,-36,-24,765),825=>array(-285,-240,-170,-11),826=>array(-405,-238,-97,-55),827=>array(-332,-241,-98,-6),828=>array(-450,-239,-51,-94),829=>array(-379,585,-123,842),830=>array(-267,595,-127,867),831=>array(-500,528,0,755),832=>array(-455,616,-179,800),833=>array(-323,616,-47,800),834=>array(-421,638,-81,778),835=>array(-266,595,-132,844),836=>array(-404,654,-55,978),837=>array(-286,-208,-179,-45),838=>array(-403,639,-97,786),839=>array(-360,-226,-140,-35),840=>array(-379,-240,-121,-47),841=>array(-367,-240,-133,-21),842=>array(-420,616,-80,800),843=>array(-420,567,-80,850),844=>array(-420,573,-80,835),845=>array(-459,-230,-41,-30),846=>array(-357,-240,-143,-45),849=>array(-320,610,-179,888),850=>array(-409,640,-81,882),851=>array(-367,-240,-135,-9),855=>array(-320,610,-179,888),856=>array(-120,654,14,774),858=>array(-445,-240,-58,-11),860=>array(-433,-237,458,-79),861=>array(-433,802,458,960),862=>array(-445,797,445,889),863=>array(-445,-185,445,-93),864=>array(-362,756,362,894),865=>array(-445,769,445,927),866=>array(-449,-230,454,-30),880=>array(92,0,606,729),881=>array(84,0,481,547),882=>array(92,0,930,729),883=>array(92,0,744,729),884=>array(78,557,218,800),885=>array(78,-208,218,35),886=>array(92,0,745,729),887=>array(84,0,617,547),890=>array(202,-208,333,-45),891=>array(43,-14,526,560),892=>array(43,-14,526,560),893=>array(43,-14,526,560),894=>array(63,-142,288,547),900=>array(169,616,445,800),901=>array(96,654,445,978),902=>array(26,0,792,800),903=>array(102,253,278,442),904=>array(-24,0,771,800),905=>array(-18,0,915,800),906=>array(-21,0,450,800),908=>array(-19,-14,836,800),910=>array(-27,0,992,800),911=>array(-30,0,867,800),912=>array(23,-19,372,978),913=>array(5,0,769,729),914=>array(92,0,692,729),915=>array(92,0,610,729),916=>array(5,0,769,729),917=>array(92,0,610,729),918=>array(45,0,680,729),919=>array(92,0,745,729),920=>array(50,-14,800,742),921=>array(92,0,280,729),922=>array(92,0,805,729),923=>array(5,0,769,729),924=>array(92,0,903,729),925=>array(92,0,745,729),926=>array(98,0,548,729),927=>array(50,-14,800,742),928=>array(92,0,745,729),929=>array(92,0,692,729),931=>array(92,0,610,729),932=>array(5,0,677,729),933=>array(-10,0,734,729),934=>array(50,0,800,729),935=>array(19,0,751,729),936=>array(56,0,795,729),937=>array(27,0,823,742),938=>array(34,0,342,927),939=>array(-10,0,734,927),940=>array(48,-13,645,800),941=>array(54,-14,493,800),942=>array(84,-208,634,800),943=>array(77,-19,353,800),944=>array(78,-10,629,978),945=>array(48,-13,645,559),946=>array(84,-208,671,773),947=>array(15,-208,667,547),948=>array(43,-14,645,768),949=>array(54,-14,493,560),950=>array(43,-208,542,760),951=>array(84,-208,634,560),952=>array(43,-11,645,768),953=>array(78,-19,348,547),954=>array(84,0,655,547),955=>array(30,0,603,760),956=>array(85,-209,704,547),957=>array(15,0,635,547),958=>array(43,-208,542,760),959=>array(43,-14,644,560),960=>array(42,-19,732,547),961=>array(84,-208,671,562),962=>array(43,-208,526,560),963=>array(43,-14,727,547),964=>array(21,-19,612,547),965=>array(78,-10,629,547),966=>array(64,-208,725,552),967=>array(25,-208,620,547),968=>array(65,-208,724,547),969=>array(43,-13,826,547),970=>array(19,-19,355,774),971=>array(78,-10,629,774),972=>array(43,-14,644,800),973=>array(78,-10,629,800),974=>array(43,-13,826,800),975=>array(92,-208,805,729),976=>array(55,-11,575,768),977=>array(51,-11,612,768),978=>array(21,0,717,729),979=>array(-24,0,954,800),980=>array(21,0,717,927),981=>array(60,-208,729,760),982=>array(22,-13,843,547),983=>array(54,-205,688,548),984=>array(50,-208,800,742),985=>array(43,-208,644,560),986=>array(50,-208,678,729),987=>array(43,-208,541,547),988=>array(92,0,599,729),989=>array(-56,-208,437,760),990=>array(61,2,646,729),991=>array(82,0,571,759),992=>array(56,-208,843,742),993=>array(22,-180,537,559),994=>array(50,-213,1043,729),995=>array(59,-208,775,547),996=>array(50,-208,740,742),997=>array(45,-208,632,560),998=>array(92,-213,878,729),999=>array(21,-14,689,575),1000=>array(42,-208,692,745),1001=>array(46,-208,608,560),1002=>array(53,0,736,742),1003=>array(49,0,622,560),1004=>array(50,-14,715,758),1005=>array(83,-14,670,758),1006=>array(28,-208,654,729),1007=>array(27,-208,563,729),1008=>array(54,-7,688,548),1009=>array(84,-216,671,562),1010=>array(43,-14,526,560),1011=>array(-33,-216,259,760),1012=>array(50,-14,800,742),1013=>array(67,-14,550,560),1014=>array(81,-14,563,560),1015=>array(92,0,692,729),1016=>array(84,-208,671,760),1017=>array(50,-14,670,742),1018=>array(92,0,903,729),1019=>array(73,-208,649,547),1020=>array(33,-208,671,562),1021=>array(33,-14,653,742),1022=>array(50,-14,670,742),1023=>array(33,-14,653,742),1024=>array(92,0,610,927),1025=>array(92,0,610,927),1026=>array(5,-200,798,729),1027=>array(92,0,610,928),1028=>array(50,-14,670,742),1029=>array(72,-14,647,742),1030=>array(92,0,280,729),1031=>array(32,0,339,927),1032=>array(-56,-200,280,729),1033=>array(46,0,1102,729),1034=>array(92,0,1060,729),1035=>array(5,0,798,729),1036=>array(92,0,803,928),1037=>array(92,0,745,927),1038=>array(29,0,741,927),1039=>array(92,-157,745,729),1040=>array(5,0,769,729),1041=>array(92,0,692,729),1042=>array(92,0,692,729),1043=>array(92,0,610,729),1044=>array(60,-157,831,729),1045=>array(92,0,610,729),1046=>array(15,0,1209,729),1047=>array(66,-14,645,742),1048=>array(92,0,745,729),1049=>array(92,0,745,927),1050=>array(92,0,803,729),1051=>array(46,0,739,729),1052=>array(92,0,903,729),1053=>array(92,0,745,729),1054=>array(50,-14,800,742),1055=>array(92,0,745,729),1056=>array(92,0,692,729),1057=>array(50,-14,670,742),1058=>array(5,0,677,729),1059=>array(29,0,741,729),1060=>array(50,0,941,729),1061=>array(19,0,751,729),1062=>array(92,-157,868,729),1063=>array(81,0,716,729),1064=>array(92,0,1143,729),1065=>array(92,-157,1266,729),1066=>array(49,0,890,729),1067=>array(92,0,944,729),1068=>array(92,0,692,729),1069=>array(64,-14,684,742),1070=>array(92,-14,1119,742),1071=>array(64,0,678,729),1072=>array(43,-14,596,560),1073=>array(43,-14,655,792),1074=>array(84,0,589,547),1075=>array(84,0,499,547),1076=>array(56,-138,751,547),1077=>array(43,-14,630,560),1078=>array(15,0,980,547),1079=>array(49,-14,518,560),1080=>array(84,0,617,547),1081=>array(84,0,617,765),1082=>array(84,0,664,547),1083=>array(55,0,648,547),1084=>array(84,0,733,547),1085=>array(84,0,607,547),1086=>array(43,-14,644,560),1087=>array(84,0,607,547),1088=>array(84,-208,671,560),1089=>array(43,-14,526,560),1090=>array(4,0,575,547),1091=>array(12,-216,634,547),1092=>array(55,-208,937,760),1093=>array(15,0,630,547),1094=>array(84,-138,698,547),1095=>array(64,0,573,547),1096=>array(84,0,972,547),1097=>array(84,-138,1063,547),1098=>array(20,0,711,547),1099=>array(84,0,823,547),1100=>array(84,0,588,547),1101=>array(67,-14,550,560),1102=>array(84,-14,928,560),1103=>array(31,0,560,547),1104=>array(43,-14,630,803),1105=>array(43,-14,630,774),1106=>array(20,-216,669,760),1107=>array(84,0,520,803),1108=>array(43,-14,526,560),1109=>array(52,-14,548,560),1110=>array(84,0,259,760),1111=>array(17,0,325,774),1112=>array(-33,-216,259,760),1113=>array(44,0,942,547),1114=>array(84,0,912,547),1115=>array(20,0,656,760),1116=>array(84,0,664,803),1117=>array(84,0,617,803),1118=>array(12,-216,634,765),1119=>array(84,-138,607,547),1120=>array(50,-14,1043,729),1121=>array(43,-13,826,547),1122=>array(49,0,791,729),1123=>array(20,0,692,731),1124=>array(92,-14,948,742),1125=>array(84,-14,760,560),1126=>array(8,0,984,729),1127=>array(25,0,807,547),1128=>array(92,0,1351,729),1129=>array(84,0,1097,547),1130=>array(50,0,800,729),1131=>array(43,0,644,547),1132=>array(92,0,1137,729),1133=>array(84,0,964,547),1134=>array(54,-208,616,938),1135=>array(40,-193,493,756),1136=>array(9,0,1060,729),1137=>array(9,-208,1046,759),1138=>array(50,-14,800,742),1139=>array(43,-14,644,560),1140=>array(5,0,826,742),1141=>array(9,0,681,560),1142=>array(5,0,826,928),1143=>array(9,0,681,800),1144=>array(47,-216,1130,742),1145=>array(43,-216,1025,560),1146=>array(50,-14,1024,742),1147=>array(43,-14,820,560),1148=>array(57,-14,1348,928),1149=>array(47,-13,1126,828),1150=>array(50,-14,1043,910),1151=>array(43,-13,826,746),1152=>array(50,-208,670,742),1153=>array(43,-208,526,560),1154=>array(27,-33,521,488),1155=>array(-601,606,-85,822),1156=>array(-413,638,0,784),1157=>array(-365,595,-231,785),1158=>array(-365,595,-231,785),1159=>array(-796,592,4,788),1160=>array(-1069,-179,383,928),1161=>array(-996,-280,306,1022),1162=>array(92,-208,933,927),1163=>array(84,-208,782,765),1164=>array(23,0,692,729),1165=>array(0,0,567,702),1166=>array(92,0,702,729),1167=>array(84,-208,671,560),1168=>array(92,0,610,878),1169=>array(84,0,499,700),1170=>array(28,0,638,729),1171=>array(21,0,519,547),1172=>array(92,-200,728,729),1173=>array(84,-216,591,547),1174=>array(15,-157,1209,729),1175=>array(15,-138,980,547),1176=>array(66,-196,645,742),1177=>array(49,-196,518,560),1178=>array(92,-157,803,729),1179=>array(84,-138,664,547),1180=>array(92,0,803,729),1181=>array(84,0,664,547),1182=>array(23,0,803,729),1183=>array(7,0,664,760),1184=>array(24,0,1000,729),1185=>array(20,0,812,547),1186=>array(92,-157,932,729),1187=>array(84,-138,783,547),1188=>array(92,0,1075,729),1189=>array(84,0,847,547),1190=>array(92,-200,1193,729),1191=>array(84,-216,939,547),1192=>array(56,-14,924,743),1193=>array(55,-14,836,560),1194=>array(50,-196,670,742),1195=>array(43,-196,526,560),1196=>array(5,-157,677,729),1197=>array(4,-138,575,547),1198=>array(-10,0,734,729),1199=>array(12,-216,634,547),1200=>array(-10,0,734,729),1201=>array(12,-216,634,547),1202=>array(19,-157,751,729),1203=>array(15,-138,630,547),1204=>array(5,-157,1088,729),1205=>array(4,-138,976,547),1206=>array(81,-157,904,729),1207=>array(64,-138,749,547),1208=>array(81,0,716,729),1209=>array(64,0,573,547),1210=>array(81,0,716,729),1211=>array(84,0,634,760),1212=>array(7,-14,976,742),1213=>array(5,-14,761,560),1214=>array(7,-184,976,742),1215=>array(5,-161,761,560),1216=>array(92,0,280,729),1217=>array(15,0,1209,927),1218=>array(15,0,980,784),1219=>array(92,-200,769,729),1220=>array(84,-216,626,547),1221=>array(26,-208,926,729),1222=>array(21,-208,781,547),1223=>array(92,-200,745,729),1224=>array(84,-216,608,547),1225=>array(92,-208,933,729),1226=>array(84,-208,782,547),1227=>array(81,-157,716,729),1228=>array(64,-138,573,547),1229=>array(92,-208,1090,729),1230=>array(84,-208,908,547),1231=>array(84,0,259,760),1232=>array(5,0,769,935),1233=>array(43,-14,596,780),1234=>array(5,0,769,927),1235=>array(43,-14,596,774),1236=>array(0,0,1012,729),1237=>array(43,-14,1000,560),1238=>array(92,0,610,927),1239=>array(43,-14,630,784),1240=>array(51,-14,800,742),1241=>array(43,-14,630,560),1242=>array(51,-14,800,927),1243=>array(43,-14,630,774),1244=>array(15,0,1209,927),1245=>array(15,0,980,774),1246=>array(66,-14,645,927),1247=>array(49,-14,518,773),1248=>array(72,-33,728,729),1249=>array(43,-215,593,547),1250=>array(92,0,745,914),1251=>array(84,0,617,763),1252=>array(92,0,745,927),1253=>array(84,0,617,774),1254=>array(50,-14,800,927),1255=>array(43,-14,644,774),1256=>array(50,-14,800,742),1257=>array(43,-14,644,560),1258=>array(50,-14,800,927),1259=>array(43,-14,644,774),1260=>array(64,-14,684,927),1261=>array(67,-14,550,774),1262=>array(29,0,741,914),1263=>array(12,-216,634,763),1264=>array(29,0,741,927),1265=>array(12,-216,634,774),1266=>array(29,0,741,927),1267=>array(12,-216,634,800),1268=>array(81,0,716,927),1269=>array(64,0,573,774),1270=>array(92,-157,610,729),1271=>array(84,-138,499,547),1272=>array(92,0,944,927),1273=>array(84,0,823,774),1274=>array(28,-216,638,729),1275=>array(21,-217,519,547),1276=>array(19,-200,750,729),1277=>array(15,-216,620,547),1278=>array(19,0,751,729),1279=>array(15,0,630,547),1280=>array(70,0,670,729),1281=>array(44,0,524,547),1282=>array(70,-14,1081,729),1283=>array(44,-14,850,547),1284=>array(98,-14,1027,742),1285=>array(79,-14,836,560),1286=>array(98,-208,804,742),1287=>array(79,-208,668,560),1288=>array(26,-14,1150,729),1289=>array(21,-14,933,547),1290=>array(92,-14,1186,729),1291=>array(84,-14,939,547),1292=>array(50,-14,748,742),1293=>array(43,-14,544,546),1294=>array(5,-14,846,729),1295=>array(4,-14,709,547),1296=>array(67,-14,616,742),1297=>array(54,-14,493,560),1298=>array(46,-200,739,729),1299=>array(55,-216,648,547),1300=>array(46,0,1266,729),1301=>array(55,0,1053,547),1302=>array(92,0,1045,729),1303=>array(84,-208,964,560),1304=>array(64,0,1008,729),1305=>array(31,-14,965,560),1306=>array(50,-146,800,742),1307=>array(45,-208,632,559),1308=>array(30,0,1072,729),1309=>array(35,0,889,547),1310=>array(92,0,803,729),1311=>array(84,0,664,547),1312=>array(46,-200,1187,729),1313=>array(55,-216,980,547),1314=>array(92,-200,1193,729),1315=>array(84,-216,939,547),1316=>array(92,-157,933,729),1317=>array(84,-138,782,547),1329=>array(83,-38,731,729),1330=>array(83,0,655,743),1331=>array(26,0,728,743),1332=>array(22,0,731,743),1333=>array(83,-14,655,729),1334=>array(66,0,664,743),1335=>array(83,0,625,729),1336=>array(83,0,655,743),1337=>array(83,-13,903,742),1338=>array(26,-14,728,729),1339=>array(83,0,648,729),1340=>array(83,0,549,729),1341=>array(83,-14,888,729),1342=>array(62,-12,722,741),1343=>array(74,0,639,729),1344=>array(4,-46,598,729),1345=>array(66,-48,664,743),1346=>array(18,0,715,743),1347=>array(22,0,660,735),1348=>array(83,-14,780,729),1349=>array(57,-14,645,743),1350=>array(0,-14,697,729),1351=>array(57,-14,655,729),1352=>array(83,0,648,743),1353=>array(40,-48,638,743),1354=>array(18,0,789,743),1355=>array(57,0,654,743),1356=>array(83,0,780,743),1357=>array(92,-14,720,729),1358=>array(18,0,715,729),1359=>array(53,-14,641,743),1360=>array(83,0,648,743),1361=>array(57,-14,645,743),1362=>array(83,0,567,729),1363=>array(22,0,811,729),1364=>array(9,0,645,743),1365=>array(49,-14,799,742),1366=>array(44,-14,833,729),1369=>array(104,481,230,760),1370=>array(57,418,250,729),1371=>array(0,616,310,800),1372=>array(0,595,375,893),1373=>array(-7,614,290,847),1374=>array(0,586,460,878),1375=>array(40,618,434,893),1377=>array(71,-13,863,547),1378=>array(76,-208,571,560),1379=>array(40,-208,700,559),1380=>array(76,-208,703,560),1381=>array(71,-14,567,760),1382=>array(40,-208,700,559),1383=>array(76,0,532,760),1384=>array(76,-208,579,560),1385=>array(76,-208,756,560),1386=>array(40,-14,700,760),1387=>array(76,-208,571,760),1388=>array(76,-208,410,547),1389=>array(76,-208,909,760),1390=>array(40,-14,600,760),1391=>array(71,-208,567,760),1392=>array(76,0,571,760),1393=>array(26,-13,536,760),1394=>array(76,-208,703,560),1395=>array(62,-13,570,768),1396=>array(71,-13,699,760),1397=>array(-30,-216,233,547),1398=>array(-61,-13,567,760),1399=>array(13,-208,456,560),1400=>array(76,0,571,560),1401=>array(5,-208,375,547),1402=>array(71,-208,863,546),1403=>array(44,-208,533,560),1404=>array(76,0,622,560),1405=>array(71,-13,567,547),1406=>array(71,-208,699,760),1407=>array(71,-13,863,560),1408=>array(76,-208,571,560),1409=>array(44,-216,631,559),1410=>array(76,0,475,547),1411=>array(71,-208,863,760),1412=>array(-56,-208,604,560),1413=>array(44,-14,645,560),1414=>array(31,-190,774,760),1415=>array(71,-14,808,760),1417=>array(101,0,259,547),1418=>array(49,180,325,359),1456=>array(296,-229,394,-10),1457=>array(147,-229,501,-10),1458=>array(138,-229,492,-10),1459=>array(125,-229,492,-10),1460=>array(296,-171,394,-73),1461=>array(223,-171,467,-73),1462=>array(235,-229,455,-10),1463=>array(174,-171,516,0),1464=>array(187,-217,504,0),1465=>array(-24,547,73,723),1466=>array(-24,547,73,723),1467=>array(187,-239,528,-5),1468=>array(301,225,399,322),1469=>array(296,-217,394,-22),1470=>array(54,413,361,555),1471=>array(187,547,504,710),1472=>array(98,-98,273,645),1473=>array(753,613,851,710),1474=>array(137,613,235,710),1475=>array(98,0,273,547),1478=>array(78,0,462,547),1479=>array(187,-229,504,-10),1488=>array(84,0,644,547),1489=>array(43,0,567,547),1490=>array(43,-9,418,547),1491=>array(43,0,545,547),1492=>array(91,0,596,547),1493=>array(91,0,252,547),1494=>array(43,0,357,547),1495=>array(91,0,596,547),1496=>array(90,-13,624,553),1497=>array(66,164,228,547),1498=>array(43,-240,487,547),1499=>array(43,0,511,547),1500=>array(43,0,527,711),1501=>array(91,0,605,547),1502=>array(43,0,633,554),1503=>array(91,-240,252,547),1504=>array(43,0,362,547),1505=>array(90,-13,624,547),1506=>array(43,-101,575,547),1507=>array(91,-240,584,547),1508=>array(91,0,603,547),1509=>array(11,-240,543,548),1510=>array(33,0,564,547),1511=>array(91,-240,660,546),1512=>array(43,0,511,547),1513=>array(20,0,750,547),1514=>array(10,-4,592,547),1520=>array(91,0,574,547),1521=>array(66,0,524,547),1522=>array(66,164,500,547),1523=>array(84,361,360,547),1524=>array(84,361,626,547),1542=>array(-2,-20,630,892),1543=>array(-2,-20,630,897),1545=>array(65,0,811,635),1546=>array(65,0,1084,635),1548=>array(98,0,322,331),1557=>array(121,612,379,868),1563=>array(98,0,323,689),1567=>array(69,0,515,742),1569=>array(73,20,437,493),1570=>array(-20,0,362,955),1571=>array(75,0,259,993),1572=>array(-42,-244,547,603),1573=>array(76,-245,259,760),1574=>array(63,-107,863,603),1575=>array(84,0,259,760),1576=>array(63,-149,921,327),1577=>array(48,-30,540,513),1578=>array(63,-5,921,415),1579=>array(63,-5,921,537),1580=>array(77,-244,720,425),1581=>array(77,-244,720,425),1582=>array(77,-244,720,579),1583=>array(61,-15,442,415),1584=>array(61,-15,442,579),1585=>array(-42,-244,508,269),1586=>array(-42,-244,508,457),1587=>array(63,-244,1297,366),1588=>array(63,-244,1297,586),1589=>array(63,-244,1265,362),1590=>array(63,-244,1265,457),1591=>array(70,0,971,760),1592=>array(70,0,971,760),1593=>array(87,-244,720,521),1594=>array(87,-244,720,652),1600=>array(-10,0,352,125),1601=>array(63,-24,1082,627),1602=>array(52,-215,825,635),1603=>array(70,-27,814,760),1604=>array(70,-142,778,760),1605=>array(68,-244,660,369),1606=>array(62,-165,779,457),1607=>array(48,-30,540,358),1608=>array(-42,-244,547,322),1609=>array(63,-107,863,462),1610=>array(63,-244,863,462),1611=>array(107,591,393,825),1612=>array(107,591,393,881),1613=>array(107,-239,393,-5),1614=>array(107,591,393,723),1615=>array(107,590,393,881),1616=>array(107,-137,393,-5),1617=>array(88,599,412,869),1618=>array(115,610,383,878),1619=>array(59,584,441,735),1620=>array(154,601,335,822),1621=>array(155,-245,336,-23),1623=>array(107,615,393,906),1626=>array(99,616,401,775),1632=>array(218,195,392,366),1633=>array(140,0,431,635),1634=>array(12,0,598,635),1635=>array(12,0,597,635),1636=>array(74,-10,530,646),1637=>array(63,-10,547,643),1638=>array(37,0,574,635),1639=>array(15,0,596,635),1640=>array(15,0,596,635),1641=>array(32,0,590,640),1642=>array(65,0,545,635),1643=>array(0,-118,349,318),1644=>array(63,418,278,729),1645=>array(42,101,502,537),1646=>array(63,-5,921,327),1647=>array(52,-215,825,484),1648=>array(216,600,284,885),1652=>array(51,641,232,863),1657=>array(63,-5,921,599),1658=>array(63,-5,921,566),1659=>array(63,-244,921,327),1660=>array(63,-171,921,415),1661=>array(63,-5,921,566),1662=>array(63,-244,921,327),1663=>array(63,-5,921,566),1664=>array(63,-244,921,327),1665=>array(77,-244,720,725),1666=>array(77,-244,720,737),1667=>array(77,-244,720,425),1668=>array(77,-244,720,425),1669=>array(77,-244,720,737),1670=>array(77,-244,720,425),1671=>array(77,-244,720,425),1672=>array(61,-15,442,746),1673=>array(61,-180,442,415),1674=>array(61,-171,442,415),1675=>array(61,-171,442,746),1676=>array(61,-15,442,586),1677=>array(61,-146,442,415),1678=>array(61,-15,442,708),1679=>array(61,-15,442,684),1680=>array(61,-15,442,708),1681=>array(-42,-244,520,648),1682=>array(-42,-244,542,556),1683=>array(-42,-244,587,269),1684=>array(-42,-244,522,269),1685=>array(-42,-244,753,269),1686=>array(-42,-244,522,269),1687=>array(-42,-244,508,464),1688=>array(-42,-244,508,586),1689=>array(-42,-244,508,586),1690=>array(63,-244,1297,464),1691=>array(63,-244,1297,366),1692=>array(63,-244,1297,586),1693=>array(63,-244,1265,362),1694=>array(63,-244,1265,586),1695=>array(70,0,971,760),1696=>array(87,-244,720,781),1697=>array(63,-24,1082,484),1698=>array(63,-171,1082,484),1699=>array(63,-171,1082,635),1700=>array(63,-24,1082,786),1701=>array(63,-293,1082,484),1702=>array(63,-24,1082,786),1703=>array(52,-215,825,635),1704=>array(52,-215,825,757),1705=>array(63,-39,1024,760),1706=>array(63,-39,1194,760),1707=>array(63,-39,1024,760),1708=>array(70,-27,814,760),1709=>array(70,-27,814,854),1710=>array(70,-293,814,760),1711=>array(63,-39,1024,910),1712=>array(63,-39,1024,910),1713=>array(63,-39,1024,910),1714=>array(63,-171,1024,910),1715=>array(63,-293,1024,910),1716=>array(63,-39,1024,1025),1717=>array(70,-142,841,971),1718=>array(70,-142,778,952),1719=>array(70,-142,781,1025),1720=>array(70,-391,778,760),1721=>array(62,-317,779,464),1722=>array(62,-165,779,366),1723=>array(62,-165,779,636),1724=>array(62,-330,779,464),1725=>array(62,-165,779,586),1726=>array(70,-33,877,506),1727=>array(77,-244,720,579),1734=>array(-42,-244,547,556),1740=>array(63,-107,863,462),1742=>array(63,-107,863,556),1749=>array(48,-30,540,358),1776=>array(218,195,392,366),1777=>array(140,0,431,635),1778=>array(12,0,598,635),1779=>array(12,0,597,635),1780=>array(12,0,573,650),1781=>array(30,-8,580,643),1782=>array(85,0,514,645),1783=>array(15,0,596,635),1784=>array(15,0,596,635),1785=>array(32,0,590,640),1984=>array(48,-14,648,742),1985=>array(69,0,583,729),1986=>array(80,0,616,729),1987=>array(80,0,616,729),1988=>array(80,0,616,729),1989=>array(80,0,616,729),1990=>array(80,0,616,729),1991=>array(98,0,599,729),1992=>array(98,0,599,729),1993=>array(70,0,625,742),1994=>array(84,0,259,729),1995=>array(43,-14,504,465),1996=>array(15,0,529,729),1997=>array(15,0,637,451),1998=>array(84,0,607,451),1999=>array(84,0,607,451),2000=>array(46,0,548,742),2001=>array(84,0,607,667),2002=>array(43,0,820,742),2003=>array(84,0,467,729),2004=>array(84,0,467,729),2005=>array(84,0,584,729),2006=>array(84,0,604,729),2007=>array(15,0,360,729),2008=>array(84,0,938,532),2009=>array(15,0,491,729),2010=>array(15,0,811,729),2011=>array(84,0,607,451),2012=>array(15,0,637,729),2013=>array(84,0,869,729),2014=>array(84,0,543,729),2015=>array(43,0,692,729),2016=>array(15,0,491,729),2017=>array(15,0,637,729),2018=>array(43,0,531,729),2019=>array(84,0,543,729),2020=>array(84,0,543,581),2021=>array(84,0,543,729),2022=>array(43,0,531,729),2023=>array(43,0,531,729),2027=>array(95,668,403,760),2028=>array(63,638,438,777),2029=>array(185,654,319,774),2030=>array(65,616,433,800),2031=>array(33,616,438,803),2032=>array(63,638,438,777),2033=>array(33,616,438,803),2034=>array(183,-212,317,-92),2035=>array(96,654,404,774),2036=>array(63,418,278,729),2037=>array(103,418,318,729),2040=>array(84,0,607,562),2041=>array(84,0,607,564),2042=>array(-10,0,425,125),3647=>array(62,-147,638,760),3713=>array(43,-14,706,560),3714=>array(43,-14,723,560),3716=>array(43,-14,704,560),3719=>array(21,-241,521,561),3720=>array(42,0,705,560),3722=>array(40,-269,768,560),3725=>array(40,-24,713,610),3732=>array(42,-14,647,560),3733=>array(42,-19,647,561),3734=>array(-22,-240,684,560),3735=>array(20,-14,768,560),3737=>array(37,-15,681,560),3738=>array(38,-15,664,561),3739=>array(38,-15,664,760),3740=>array(60,-12,910,626),3741=>array(64,-14,762,760),3742=>array(76,-14,773,560),3743=>array(76,-14,773,760),3745=>array(24,-14,771,547),3746=>array(40,-23,713,760),3747=>array(48,-10,733,615),3749=>array(41,-33,693,560),3751=>array(33,-33,640,561),3754=>array(51,-21,819,724),3755=>array(44,-21,935,620),3757=>array(53,-20,662,606),3758=>array(48,-14,825,698),3759=>array(43,-259,897,648),3760=>array(36,-16,658,567),3761=>array(-653,610,-31,896),3762=>array(39,0,563,593),3763=>array(-479,0,563,875),3764=>array(-654,622,-62,950),3765=>array(-654,633,13,962),3766=>array(-654,622,-62,950),3767=>array(-654,633,13,962),3768=>array(-426,-385,-165,-55),3769=>array(-473,-316,-174,-28),3771=>array(-653,610,-31,896),3772=>array(-682,-311,15,-48),3773=>array(39,-220,691,776),3776=>array(83,-13,444,561),3777=>array(83,-13,818,561),3778=>array(-37,-14,458,936),3779=>array(23,-14,595,879),3780=>array(-15,-35,585,809),3782=>array(70,-240,688,582),3784=>array(-413,659,-297,844),3785=>array(-627,622,-22,918),3786=>array(-667,621,39,965),3787=>array(-521,612,-187,917),3788=>array(-682,603,15,866),3789=>array(-479,668,-229,875),3792=>array(66,-29,723,563),3793=>array(25,-139,721,586),3794=>array(31,-80,603,711),3795=>array(24,-14,882,981),3796=>array(48,-156,696,711),3797=>array(48,-156,696,711),3798=>array(64,-14,894,950),3799=>array(43,-240,706,560),3800=>array(72,-269,774,582),3801=>array(58,-14,858,564),3804=>array(44,-21,1301,620),3805=>array(44,-21,1305,620),4256=>array(47,-14,827,819),4257=>array(39,-0,719,819),4258=>array(37,-138,667,828),4259=>array(41,-15,793,819),4260=>array(29,0,572,828),4261=>array(24,0,729,828),4262=>array(15,-14,709,819),4263=>array(49,-14,890,828),4264=>array(4,0,415,862),4265=>array(39,0,581,819),4266=>array(18,-14,796,820),4267=>array(48,-14,837,819),4268=>array(43,0,586,819),4269=>array(37,-157,817,829),4270=>array(11,-14,731,822),4271=>array(20,0,585,823),4272=>array(43,-15,863,820),4273=>array(43,-15,587,820),4274=>array(43,-0,586,828),4275=>array(37,-170,817,828),4276=>array(37,0,828,825),4277=>array(28,0,695,820),4278=>array(44,0,586,828),4279=>array(34,0,577,820),4280=>array(39,-14,582,820),4281=>array(43,0,586,819),4282=>array(45,-14,778,827),4283=>array(46,-15,822,820),4284=>array(43,-0,586,819),4285=>array(29,-15,594,828),4286=>array(43,-0,586,819),4287=>array(15,0,726,819),4288=>array(18,-14,796,820),4289=>array(43,0,586,820),4290=>array(37,-15,652,828),4291=>array(9,0,552,820),4292=>array(33,0,561,820),4293=>array(24,-14,714,828),4304=>array(49,-14,505,599),4305=>array(49,-14,515,823),4306=>array(44,-232,578,561),4307=>array(49,-225,786,557),4308=>array(49,-232,496,557),4309=>array(49,-232,505,557),4310=>array(25,-14,502,828),4311=>array(49,-14,779,557),4312=>array(49,0,515,557),4313=>array(49,-232,506,542),4314=>array(49,-225,1025,562),4315=>array(49,-14,505,828),4316=>array(63,-14,520,819),4317=>array(49,-0,765,557),4318=>array(49,-14,505,818),4319=>array(49,-232,504,560),4320=>array(49,0,774,830),4321=>array(63,-14,520,818),4322=>array(49,-232,651,670),4323=>array(29,-232,533,604),4324=>array(49,-232,792,558),4325=>array(49,-232,496,818),4326=>array(49,-225,766,557),4327=>array(49,-232,505,549),4328=>array(20,-14,489,828),4329=>array(63,0,520,828),4330=>array(49,-232,573,548),4331=>array(49,-14,504,818),4332=>array(64,-15,534,828),4333=>array(49,-232,517,818),4334=>array(63,-14,520,818),4335=>array(24,-232,516,580),4336=>array(49,-15,505,823),4337=>array(49,-14,505,823),4338=>array(49,-146,504,557),4339=>array(49,-232,505,558),4340=>array(49,-232,504,828),4341=>array(49,-14,558,828),4342=>array(49,-232,803,557),4343=>array(49,-232,556,557),4344=>array(49,-232,505,549),4345=>array(44,-232,578,561),4346=>array(49,-111,505,557),4347=>array(49,0,399,500),4348=>array(24,400,294,828),5121=>array(5,0,769,729),5122=>array(5,0,769,1056),5123=>array(5,0,769,729),5124=>array(5,0,769,928),5125=>array(92,0,821,729),5126=>array(92,0,821,928),5127=>array(92,0,821,927),5129=>array(92,0,821,729),5130=>array(84,0,813,729),5131=>array(84,0,813,928),5132=>array(92,0,1013,729),5133=>array(5,0,925,729),5134=>array(92,0,1013,729),5135=>array(5,0,925,729),5136=>array(92,0,1013,928),5137=>array(5,0,925,928),5138=>array(92,0,1065,729),5139=>array(92,0,1056,729),5140=>array(92,0,1065,928),5141=>array(92,0,1056,928),5142=>array(92,0,821,928),5143=>array(92,0,1057,729),5144=>array(84,0,1058,729),5145=>array(92,0,1057,928),5146=>array(84,0,1058,928),5147=>array(84,0,813,928),5149=>array(92,607,226,728),5150=>array(60,326,473,734),5151=>array(31,338,379,722),5152=>array(31,338,379,722),5153=>array(60,392,338,711),5154=>array(60,352,338,670),5155=>array(60,392,338,670),5156=>array(60,392,338,670),5157=>array(31,327,518,749),5158=>array(60,326,414,734),5159=>array(92,304,226,424),5160=>array(60,494,338,569),5161=>array(60,392,338,670),5162=>array(60,392,338,693),5163=>array(5,0,1167,729),5164=>array(5,0,940,729),5165=>array(92,0,1170,729),5166=>array(84,0,1251,729),5167=>array(5,0,769,729),5168=>array(5,0,769,1056),5169=>array(5,0,769,729),5170=>array(5,0,769,928),5171=>array(73,0,802,729),5172=>array(73,0,802,928),5173=>array(73,0,802,927),5175=>array(73,0,802,729),5176=>array(73,0,802,729),5177=>array(73,0,802,928),5178=>array(92,0,1013,729),5179=>array(5,0,925,729),5180=>array(92,0,1013,729),5181=>array(5,0,925,729),5182=>array(92,0,1013,928),5183=>array(5,0,925,928),5184=>array(92,0,1046,729),5185=>array(73,0,1056,729),5186=>array(92,0,1046,928),5187=>array(73,0,1056,928),5188=>array(92,0,1046,729),5189=>array(73,0,1058,729),5190=>array(92,0,1046,928),5191=>array(73,0,1058,928),5192=>array(73,0,802,927),5193=>array(60,326,520,727),5194=>array(60,326,172,734),5196=>array(92,-14,720,729),5197=>array(92,0,720,1056),5198=>array(92,0,720,743),5199=>array(92,0,720,928),5200=>array(73,0,759,729),5201=>array(73,0,759,928),5202=>array(73,0,759,927),5204=>array(73,0,759,729),5205=>array(56,0,742,729),5206=>array(56,0,742,928),5207=>array(92,-14,964,729),5208=>array(92,-14,964,729),5209=>array(92,0,964,743),5210=>array(92,0,964,743),5211=>array(92,0,964,928),5212=>array(92,0,964,928),5213=>array(92,0,1003,729),5214=>array(73,0,970,729),5215=>array(92,0,1003,928),5216=>array(73,0,970,928),5217=>array(92,0,986,729),5218=>array(56,0,968,729),5219=>array(92,0,986,928),5220=>array(56,0,968,928),5221=>array(92,0,986,729),5222=>array(60,326,427,733),5223=>array(92,-14,949,734),5224=>array(92,0,949,743),5225=>array(73,0,967,734),5226=>array(56,0,960,734),5227=>array(41,0,651,743),5228=>array(92,0,702,1056),5229=>array(92,0,702,743),5230=>array(92,0,702,928),5231=>array(41,-14,651,729),5232=>array(41,-14,651,928),5233=>array(41,-14,708,927),5234=>array(92,-14,702,729),5235=>array(92,-14,702,928),5236=>array(92,0,937,743),5237=>array(41,0,891,743),5238=>array(92,0,939,743),5239=>array(92,0,891,743),5240=>array(92,0,939,928),5241=>array(92,0,891,928),5242=>array(92,-14,937,729),5243=>array(41,-14,891,729),5244=>array(92,-14,937,928),5245=>array(41,-14,891,928),5246=>array(92,-14,939,729),5247=>array(92,-14,891,729),5248=>array(92,-14,939,928),5249=>array(92,-14,891,928),5250=>array(92,-14,939,729),5251=>array(60,319,445,734),5252=>array(60,319,445,734),5253=>array(41,0,881,743),5254=>array(92,0,881,743),5255=>array(41,-14,881,734),5256=>array(92,-14,881,734),5257=>array(41,0,651,743),5258=>array(92,0,702,1056),5259=>array(92,0,702,743),5260=>array(92,0,702,928),5261=>array(41,-14,651,729),5262=>array(41,-14,651,928),5263=>array(41,-14,714,927),5264=>array(92,-14,702,729),5265=>array(92,-14,702,928),5266=>array(92,0,937,743),5267=>array(41,0,891,743),5268=>array(92,0,988,743),5269=>array(92,0,891,743),5270=>array(92,0,988,928),5271=>array(92,0,891,928),5272=>array(92,-14,937,729),5273=>array(41,-14,891,729),5274=>array(92,-14,937,928),5275=>array(41,-14,891,928),5276=>array(92,-14,988,729),5277=>array(92,-14,891,729),5278=>array(92,-14,988,928),5279=>array(92,-14,891,928),5280=>array(92,-14,988,729),5281=>array(60,319,445,734),5282=>array(60,319,445,734),5283=>array(27,0,535,729),5284=>array(92,0,599,1056),5285=>array(92,0,599,729),5286=>array(92,0,599,928),5287=>array(27,0,535,729),5288=>array(27,0,535,928),5289=>array(27,0,598,927),5290=>array(92,0,599,729),5291=>array(92,0,599,928),5292=>array(92,0,790,729),5293=>array(27,0,771,729),5294=>array(92,0,836,729),5295=>array(92,0,790,729),5296=>array(92,0,836,928),5297=>array(92,0,790,928),5298=>array(92,0,790,729),5299=>array(27,0,790,729),5300=>array(92,0,790,928),5301=>array(27,0,790,928),5302=>array(92,0,836,729),5303=>array(92,0,790,729),5304=>array(92,0,836,928),5305=>array(92,0,790,928),5306=>array(92,0,836,729),5307=>array(60,326,380,734),5308=>array(60,326,492,733),5309=>array(60,326,380,734),5312=>array(84,-14,947,468),5313=>array(41,-14,904,786),5314=>array(41,-14,904,468),5315=>array(41,-14,904,667),5316=>array(27,0,890,482),5317=>array(27,0,890,667),5318=>array(27,0,890,667),5319=>array(41,0,904,482),5320=>array(41,0,904,667),5321=>array(92,-14,1197,468),5322=>array(84,-14,1163,468),5323=>array(92,0,1172,482),5324=>array(41,0,1144,482),5325=>array(92,0,1172,667),5326=>array(41,0,1144,667),5327=>array(41,0,904,667),5328=>array(60,477,604,742),5329=>array(60,319,440,734),5330=>array(60,477,604,742),5331=>array(84,0,947,468),5332=>array(41,0,904,786),5333=>array(41,0,904,468),5334=>array(41,0,904,667),5335=>array(27,0,890,468),5336=>array(27,0,890,667),5337=>array(27,0,890,667),5338=>array(41,0,904,468),5339=>array(41,0,904,667),5340=>array(92,0,1190,468),5341=>array(84,0,1163,468),5342=>array(92,0,1199,468),5343=>array(41,0,1144,468),5344=>array(92,0,1199,667),5345=>array(41,0,1144,667),5346=>array(92,0,1187,468),5347=>array(27,0,1130,468),5348=>array(92,0,1187,667),5349=>array(27,0,1130,667),5350=>array(92,0,1199,468),5351=>array(41,0,1144,468),5352=>array(92,0,1199,667),5353=>array(41,0,1144,667),5354=>array(60,477,604,734),5356=>array(73,0,802,729),5357=>array(41,0,638,729),5358=>array(92,0,736,1056),5359=>array(92,0,689,729),5360=>array(92,0,689,928),5361=>array(41,0,638,729),5362=>array(41,0,638,928),5363=>array(41,0,694,927),5364=>array(92,0,689,729),5365=>array(92,0,689,928),5366=>array(92,0,906,729),5367=>array(41,0,875,729),5368=>array(92,0,926,729),5369=>array(92,0,905,729),5370=>array(92,0,926,928),5371=>array(92,0,905,928),5372=>array(92,0,906,729),5373=>array(41,0,875,729),5374=>array(92,0,906,928),5375=>array(41,0,875,928),5376=>array(92,0,926,729),5377=>array(92,0,905,729),5378=>array(92,0,926,928),5379=>array(92,0,905,928),5380=>array(92,0,926,729),5381=>array(60,326,437,734),5382=>array(60,319,404,742),5383=>array(60,326,437,734),5392=>array(41,-14,882,743),5393=>array(41,-14,882,743),5394=>array(41,-14,882,928),5395=>array(41,-14,1095,482),5396=>array(41,-14,1095,667),5397=>array(41,-14,1095,482),5398=>array(41,-14,1095,667),5399=>array(92,-14,1168,743),5400=>array(41,-14,1118,743),5401=>array(92,-14,1168,743),5402=>array(41,-14,1118,743),5403=>array(92,-14,1168,928),5404=>array(41,-14,1118,928),5405=>array(92,-14,1390,482),5406=>array(41,-14,1336,482),5407=>array(92,-14,1390,667),5408=>array(41,-14,1336,667),5409=>array(92,-14,1390,482),5410=>array(41,-14,1336,482),5411=>array(92,-14,1390,667),5412=>array(41,-14,1336,667),5413=>array(60,469,690,747),5414=>array(84,0,684,729),5415=>array(92,0,692,1056),5416=>array(92,0,692,729),5417=>array(92,0,692,928),5418=>array(84,0,684,729),5419=>array(84,0,684,928),5420=>array(84,0,750,927),5421=>array(92,0,692,729),5422=>array(92,0,692,928),5423=>array(92,0,911,729),5424=>array(84,0,919,729),5425=>array(92,0,929,729),5426=>array(92,0,912,729),5427=>array(92,0,929,928),5428=>array(92,0,912,928),5429=>array(92,0,911,729),5430=>array(84,0,919,729),5431=>array(92,0,911,928),5432=>array(84,0,919,928),5433=>array(92,0,929,729),5434=>array(92,0,912,729),5435=>array(92,0,929,928),5436=>array(92,0,912,928),5437=>array(92,0,929,928),5438=>array(60,326,438,734),5440=>array(60,392,338,670),5441=>array(60,326,454,734),5442=>array(92,-14,949,468),5443=>array(84,-14,941,468),5444=>array(27,0,884,482),5445=>array(92,0,949,786),5446=>array(92,0,949,482),5447=>array(92,0,949,667),5448=>array(92,0,692,729),5449=>array(92,0,692,928),5450=>array(92,0,692,729),5451=>array(41,0,641,729),5452=>array(41,0,641,928),5453=>array(41,0,641,729),5454=>array(92,0,911,928),5455=>array(41,0,875,928),5456=>array(60,326,438,727),5458=>array(73,0,802,729),5459=>array(51,0,769,743),5460=>array(51,-14,769,1056),5461=>array(51,-14,769,729),5462=>array(51,-14,769,928),5463=>array(73,0,844,663),5464=>array(73,0,844,928),5465=>array(84,0,855,663),5466=>array(84,0,855,928),5467=>array(92,0,1099,928),5468=>array(84,0,1058,928),5469=>array(60,311,546,675),5470=>array(92,-14,720,743),5471=>array(92,-14,720,743),5472=>array(92,-14,720,743),5473=>array(92,-14,720,743),5474=>array(92,-14,720,928),5475=>array(92,-14,720,928),5476=>array(54,0,759,729),5477=>array(54,0,759,928),5478=>array(56,0,762,729),5479=>array(56,0,762,928),5480=>array(92,0,1006,928),5481=>array(56,0,968,928),5482=>array(60,326,512,733),5492=>array(41,0,893,743),5493=>array(84,0,936,743),5494=>array(84,0,936,928),5495=>array(41,-14,893,729),5496=>array(41,-14,893,928),5497=>array(84,-14,936,729),5498=>array(84,-14,936,928),5499=>array(60,319,562,734),5500=>array(92,0,745,729),5501=>array(60,326,454,734),5502=>array(60,0,1197,1056),5503=>array(60,0,1197,743),5504=>array(60,0,1197,928),5505=>array(60,-14,1146,729),5506=>array(60,-14,1146,928),5507=>array(60,-14,1197,729),5508=>array(60,-14,1197,928),5509=>array(60,319,939,734),5514=>array(41,0,893,743),5515=>array(84,0,936,743),5516=>array(41,-14,893,729),5517=>array(84,-14,936,729),5518=>array(60,0,1550,1056),5519=>array(60,0,1550,743),5520=>array(60,0,1550,928),5521=>array(60,-14,1203,741),5522=>array(60,-14,1203,928),5523=>array(60,-14,1550,741),5524=>array(60,-14,1550,928),5525=>array(60,335,792,741),5526=>array(60,335,1217,741),5536=>array(41,0,904,709),5537=>array(41,0,904,709),5538=>array(27,-242,890,468),5539=>array(27,-242,890,667),5540=>array(41,-242,904,468),5541=>array(41,-242,904,667),5542=>array(60,344,604,734),5543=>array(84,0,771,729),5544=>array(5,0,692,729),5545=>array(5,0,692,928),5546=>array(84,0,771,729),5547=>array(84,0,771,928),5548=>array(5,0,692,729),5549=>array(5,0,692,928),5550=>array(15,326,438,734),5551=>array(92,-14,702,729),5598=>array(92,0,778,729),5601=>array(52,0,738,729),5702=>array(60,326,439,734),5703=>array(60,240,439,820),5742=>array(10,0,403,306),5743=>array(60,0,1146,743),5744=>array(60,0,1499,743),5745=>array(60,0,1975,743),5746=>array(60,0,1975,928),5747=>array(60,-14,1628,741),5748=>array(60,-14,1586,928),5749=>array(60,-14,1975,741),5750=>array(60,-14,1975,928),5760=>array(-10,219,553,354),5761=>array(-10,-125,646,354),5762=>array(-10,-125,955,354),5763=>array(-10,-125,1264,354),5764=>array(-10,-125,1572,354),5765=>array(-10,-125,1881,354),5766=>array(-10,219,637,697),5767=>array(-10,219,945,697),5768=>array(-10,219,1264,697),5769=>array(-10,219,1569,697),5770=>array(-10,219,1881,697),5771=>array(-10,-125,579,697),5772=>array(-10,-125,888,697),5773=>array(-10,-125,1198,697),5774=>array(-10,-125,1507,697),5775=>array(-10,-125,1817,697),5776=>array(-10,41,646,532),5777=>array(-10,41,955,532),5778=>array(-10,41,1264,532),5779=>array(-10,41,1572,532),5780=>array(-10,41,1881,532),5781=>array(-10,-125,579,697),5782=>array(-10,-125,948,697),5783=>array(-10,-109,798,354),5784=>array(-10,-254,1244,354),5785=>array(-10,219,1569,928),5786=>array(-10,14,750,354),5787=>array(55,-49,648,622),5788=>array(-10,-49,583,622),7424=>array(15,0,637,547),7425=>array(0,0,755,547),7426=>array(43,-14,1000,560),7427=>array(20,0,564,547),7428=>array(43,-14,526,560),7429=>array(84,-1,611,547),7430=>array(20,-1,611,547),7431=>array(92,0,480,547),7432=>array(54,-14,493,560),7433=>array(84,-213,259,547),7434=>array(44,-14,416,547),7435=>array(84,0,684,547),7436=>array(-18,0,499,547),7437=>array(84,0,733,547),7438=>array(84,0,617,547),7439=>array(43,-14,644,560),7440=>array(43,-14,526,560),7441=>array(43,-27,617,573),7442=>array(43,31,617,515),7443=>array(13,-28,653,579),7444=>array(43,-14,1046,560),7446=>array(43,273,644,560),7447=>array(44,-14,646,273),7448=>array(51,0,515,547),7449=>array(21,0,560,547),7450=>array(21,0,560,547),7451=>array(4,0,575,547),7452=>array(84,-14,607,547),7453=>array(85,10,646,560),7454=>array(69,10,857,561),7455=>array(19,-238,651,560),7456=>array(15,0,637,547),7457=>array(35,0,889,547),7458=>array(45,0,534,547),7459=>array(57,-14,581,547),7462=>array(84,0,499,547),7463=>array(15,0,637,547),7464=>array(84,0,607,547),7465=>array(51,0,515,547),7466=>array(84,0,698,547),7467=>array(55,0,648,547),7468=>array(3,326,484,734),7469=>array(0,326,638,734),7470=>array(58,326,436,734),7472=>array(58,326,490,734),7473=>array(58,326,384,734),7474=>array(58,326,384,734),7475=>array(31,318,471,742),7476=>array(58,326,469,734),7477=>array(58,326,176,734),7478=>array(-35,214,176,734),7479=>array(58,326,507,734),7480=>array(58,326,384,734),7481=>array(58,326,569,734),7482=>array(58,326,469,734),7483=>array(58,326,469,734),7484=>array(31,318,504,742),7485=>array(39,318,471,742),7486=>array(58,326,436,734),7487=>array(58,326,473,734),7488=>array(3,326,426,734),7489=>array(58,318,454,734),7490=>array(19,326,675,734),7491=>array(53,318,402,640),7492=>array(53,318,402,640),7493=>array(53,318,423,640),7494=>array(53,318,656,640),7495=>array(53,318,423,751),7496=>array(53,318,423,751),7497=>array(53,318,423,640),7498=>array(53,318,423,640),7499=>array(53,318,330,640),7500=>array(53,318,330,640),7501=>array(53,205,423,639),7502=>array(53,207,164,632),7503=>array(53,326,431,751),7504=>array(53,326,607,640),7505=>array(53,205,399,640),7506=>array(53,318,432,640),7507=>array(53,318,357,640),7508=>array(53,479,432,640),7509=>array(53,318,432,479),7510=>array(53,209,423,640),7511=>array(53,326,332,719),7512=>array(53,318,399,632),7513=>array(53,332,407,640),7514=>array(53,318,607,632),7515=>array(53,326,445,632),7517=>array(53,209,423,759),7518=>array(10,209,420,632),7519=>array(27,318,406,756),7520=>array(41,209,457,635),7521=>array(16,209,391,632),7522=>array(53,0,164,425),7523=>array(54,0,314,313),7524=>array(53,-8,399,306),7525=>array(53,0,445,306),7526=>array(53,-117,423,433),7527=>array(10,-117,420,306),7528=>array(53,-117,423,314),7529=>array(41,-117,457,309),7530=>array(16,-117,391,306),7543=>array(84,-216,671,559),7544=>array(58,326,469,734),7547=>array(84,0,461,547),7549=>array(5,-208,742,560),7557=>array(84,-216,434,760),7579=>array(53,318,423,640),7580=>array(53,318,357,640),7581=>array(53,288,357,640),7582=>array(53,318,432,751),7583=>array(53,318,330,640),7584=>array(53,326,321,751),7585=>array(53,205,292,632),7586=>array(53,205,423,632),7587=>array(53,207,399,632),7588=>array(53,326,291,751),7589=>array(53,326,226,632),7590=>array(53,326,291,632),7591=>array(53,326,291,632),7592=>array(53,205,375,751),7593=>array(53,205,270,751),7594=>array(53,205,274,751),7595=>array(53,326,314,632),7596=>array(53,205,608,640),7597=>array(53,209,607,632),7598=>array(53,205,506,640),7599=>array(53,205,505,640),7600=>array(53,326,393,632),7601=>array(53,318,432,640),7602=>array(53,209,486,751),7603=>array(53,205,366,640),7604=>array(53,205,340,751),7605=>array(53,205,332,719),7606=>array(53,318,527,632),7607=>array(53,298,438,632),7608=>array(53,318,383,632),7609=>array(53,326,395,632),7610=>array(53,326,445,632),7611=>array(53,326,361,632),7612=>array(53,205,468,632),7613=>array(53,288,414,632),7614=>array(53,206,399,632),7615=>array(53,320,370,756),7620=>array(-467,616,-35,800),7621=>array(-467,616,-35,800),7622=>array(-467,616,-35,800),7623=>array(-467,616,-35,800),7624=>array(-513,616,11,800),7625=>array(-513,616,11,800),7680=>array(5,-240,769,729),7681=>array(43,-240,596,560),7682=>array(92,0,692,928),7683=>array(84,-14,671,913),7684=>array(92,-212,692,729),7685=>array(84,-212,671,760),7686=>array(92,-184,692,729),7687=>array(84,-184,671,760),7688=>array(50,-196,670,927),7689=>array(43,-196,526,800),7690=>array(92,0,778,927),7691=>array(45,-14,632,942),7692=>array(92,-212,778,729),7693=>array(45,-212,632,760),7694=>array(92,-184,778,729),7695=>array(45,-184,632,760),7696=>array(92,-192,778,729),7697=>array(45,-196,632,760),7698=>array(92,-240,778,729),7699=>array(45,-240,632,760),7700=>array(92,0,610,1057),7701=>array(43,-14,630,927),7702=>array(92,0,610,1057),7703=>array(43,-14,630,927),7704=>array(92,-203,610,729),7705=>array(43,-203,630,560),7706=>array(92,-195,610,729),7707=>array(43,-195,630,560),7708=>array(92,-196,610,927),7709=>array(43,-196,630,784),7710=>array(92,0,599,928),7711=>array(19,0,444,942),7712=>array(50,-14,747,901),7713=>array(45,-216,632,760),7714=>array(92,0,745,928),7715=>array(84,0,634,913),7716=>array(92,-212,745,729),7717=>array(84,-212,634,760),7718=>array(92,0,745,927),7719=>array(23,0,634,927),7720=>array(45,-196,745,729),7721=>array(38,-196,634,760),7722=>array(92,-236,745,729),7723=>array(84,-236,634,760),7724=>array(16,-195,355,729),7725=>array(1,-195,341,760),7726=>array(40,0,378,1057),7727=>array(16,0,354,917),7728=>array(92,0,805,927),7729=>array(84,0,684,982),7730=>array(92,-212,805,729),7731=>array(84,-212,684,760),7732=>array(92,-184,805,729),7733=>array(84,-184,684,760),7734=>array(92,-212,610,729),7735=>array(83,-212,259,760),7736=>array(32,-212,610,942),7737=>array(18,-212,325,914),7738=>array(92,-184,610,729),7739=>array(20,-184,328,760),7740=>array(92,-240,610,729),7741=>array(-13,-240,355,760),7742=>array(92,0,903,927),7743=>array(83,0,963,800),7744=>array(92,0,903,928),7745=>array(83,0,963,760),7746=>array(92,-212,903,729),7747=>array(83,-212,963,560),7748=>array(92,0,745,928),7749=>array(84,0,634,760),7750=>array(92,-212,745,729),7751=>array(84,-212,634,560),7752=>array(92,-184,745,729),7753=>array(84,-184,634,560),7754=>array(92,-240,745,729),7755=>array(84,-240,634,560),7756=>array(50,-14,800,1057),7757=>array(43,-14,644,916),7758=>array(50,-14,800,1043),7759=>array(43,-14,644,900),7760=>array(50,-14,800,1057),7761=>array(43,-14,644,927),7762=>array(50,-14,800,1057),7763=>array(43,-14,644,927),7764=>array(92,0,692,927),7765=>array(84,-208,671,800),7766=>array(92,0,692,928),7767=>array(84,-208,671,760),7768=>array(92,0,750,928),7769=>array(84,0,490,760),7770=>array(92,-212,750,729),7771=>array(83,-212,490,560),7772=>array(92,-212,750,914),7773=>array(83,-212,490,759),7774=>array(92,-184,750,729),7775=>array(33,-184,490,560),7776=>array(72,-14,647,928),7777=>array(52,-14,548,760),7778=>array(72,-212,647,742),7779=>array(52,-212,548,560),7780=>array(72,-14,647,928),7781=>array(52,-14,548,816),7782=>array(72,-14,647,1053),7783=>array(52,-14,548,1002),7784=>array(72,-212,647,928),7785=>array(52,-212,548,762),7786=>array(5,0,677,927),7787=>array(13,0,455,942),7788=>array(5,-212,677,729),7789=>array(13,-212,455,702),7790=>array(5,-184,677,729),7791=>array(13,-184,455,702),7792=>array(5,-240,677,729),7793=>array(13,-240,455,702),7794=>array(92,-212,720,729),7795=>array(78,-212,628,547),7796=>array(92,-196,720,729),7797=>array(78,-195,628,547),7798=>array(92,-203,720,729),7799=>array(78,-203,628,547),7800=>array(92,-14,720,1057),7801=>array(78,-14,628,916),7802=>array(92,-14,720,1043),7803=>array(78,-14,628,887),7804=>array(5,0,769,928),7805=>array(15,0,637,778),7806=>array(5,-212,769,729),7807=>array(15,-212,637,547),7808=>array(30,0,1072,931),7809=>array(35,0,889,803),7810=>array(30,0,1072,931),7811=>array(35,0,889,803),7812=>array(30,0,1072,927),7813=>array(35,0,889,774),7814=>array(30,0,1072,927),7815=>array(35,0,889,760),7816=>array(30,-212,1072,729),7817=>array(35,-212,889,547),7818=>array(19,0,751,928),7819=>array(15,0,630,760),7820=>array(19,0,751,927),7821=>array(15,0,630,774),7822=>array(-10,0,734,928),7823=>array(12,-216,634,760),7824=>array(45,0,680,927),7825=>array(45,0,534,798),7826=>array(45,-212,680,729),7827=>array(45,-212,534,547),7828=>array(45,-184,680,729),7829=>array(45,-184,534,547),7830=>array(84,-184,634,760),7831=>array(13,0,455,927),7832=>array(35,0,889,888),7833=>array(12,-216,634,888),7834=>array(43,-14,758,760),7835=>array(19,0,444,942),7836=>array(-18,0,444,760),7837=>array(19,0,444,760),7838=>array(92,-14,823,743),7839=>array(43,-14,645,768),7840=>array(5,-212,769,729),7841=>array(43,-212,596,560),7842=>array(5,0,769,1025),7843=>array(43,-14,596,843),7844=>array(5,0,769,1054),7845=>array(43,-14,652,873),7846=>array(5,0,769,1054),7847=>array(43,-14,597,874),7848=>array(5,0,769,1093),7849=>array(43,-14,672,912),7850=>array(5,0,769,1068),7851=>array(43,-14,596,887),7852=>array(5,-212,769,927),7853=>array(43,-212,596,800),7854=>array(5,0,769,1057),7855=>array(43,-14,596,891),7856=>array(5,0,769,1057),7857=>array(43,-14,596,894),7858=>array(5,0,769,1123),7859=>array(43,-14,596,959),7860=>array(5,0,769,1068),7861=>array(43,-14,596,905),7862=>array(5,-212,769,935),7863=>array(43,-212,596,780),7864=>array(92,-212,610,729),7865=>array(43,-212,630,560),7866=>array(92,0,610,1025),7867=>array(43,-14,630,843),7868=>array(92,0,610,928),7869=>array(43,-14,630,778),7870=>array(92,0,684,1054),7871=>array(43,-14,688,873),7872=>array(92,0,621,1054),7873=>array(43,-14,630,874),7874=>array(92,0,686,1093),7875=>array(43,-14,681,912),7876=>array(92,0,610,1068),7877=>array(43,-14,630,887),7878=>array(92,-212,610,927),7879=>array(43,-212,630,800),7880=>array(66,0,313,1025),7881=>array(52,0,300,842),7882=>array(92,-212,280,729),7883=>array(83,-212,259,760),7884=>array(50,-212,800,742),7885=>array(43,-212,644,560),7886=>array(50,-14,800,1025),7887=>array(43,-14,644,843),7888=>array(50,-14,800,1054),7889=>array(43,-14,679,873),7890=>array(50,-14,800,1054),7891=>array(43,-14,644,874),7892=>array(50,-14,800,1093),7893=>array(43,-14,685,912),7894=>array(50,-14,800,1068),7895=>array(43,-14,644,887),7896=>array(50,-212,800,927),7897=>array(43,-212,644,800),7898=>array(53,-14,854,927),7899=>array(46,-14,708,800),7900=>array(53,-14,854,927),7901=>array(46,-14,708,800),7902=>array(53,-14,854,1025),7903=>array(46,-14,708,843),7904=>array(53,-14,854,928),7905=>array(46,-14,708,778),7906=>array(53,-212,854,761),7907=>array(46,-212,708,609),7908=>array(92,-212,720,729),7909=>array(78,-212,628,547),7910=>array(92,-14,720,1025),7911=>array(78,-14,628,843),7912=>array(91,-14,833,927),7913=>array(75,-14,733,800),7914=>array(91,-14,833,927),7915=>array(75,-14,733,800),7916=>array(91,-14,833,1025),7917=>array(75,-14,733,843),7918=>array(91,-14,833,928),7919=>array(75,-14,733,778),7920=>array(91,-212,833,761),7921=>array(75,-212,733,609),7922=>array(-10,0,734,931),7923=>array(12,-216,634,803),7924=>array(-10,-212,734,729),7925=>array(12,-216,634,547),7926=>array(-10,0,734,1029),7927=>array(12,-216,634,843),7928=>array(-10,0,734,928),7929=>array(12,-216,634,778),7930=>array(92,0,925,729),7931=>array(9,0,635,760),7936=>array(48,-13,645,785),7937=>array(48,-13,645,785),7938=>array(48,-13,645,800),7939=>array(48,-13,645,800),7940=>array(48,-13,645,800),7941=>array(48,-13,645,800),7942=>array(48,-13,645,928),7943=>array(48,-13,645,928),7944=>array(5,0,769,785),7945=>array(5,0,769,785),7946=>array(2,0,1036,800),7947=>array(3,0,1039,800),7948=>array(1,0,930,800),7949=>array(2,0,958,800),7950=>array(4,0,831,928),7951=>array(3,0,854,928),7952=>array(54,-14,493,785),7953=>array(54,-14,493,785),7954=>array(54,-14,498,800),7955=>array(54,-14,493,800),7956=>array(54,-14,531,800),7957=>array(54,-14,516,800),7960=>array(3,0,718,785),7961=>array(4,0,721,785),7962=>array(2,0,1026,800),7963=>array(3,0,1023,800),7964=>array(1,0,950,800),7965=>array(2,0,979,800),7968=>array(84,-208,634,785),7969=>array(84,-208,634,785),7970=>array(84,-208,634,800),7971=>array(84,-208,634,800),7972=>array(84,-208,634,800),7973=>array(84,-208,634,800),7974=>array(84,-208,634,928),7975=>array(84,-208,634,928),7976=>array(3,0,854,785),7977=>array(4,0,859,785),7978=>array(2,0,1159,800),7979=>array(3,0,1158,800),7980=>array(1,0,1088,800),7981=>array(2,0,1114,800),7982=>array(4,0,962,928),7983=>array(3,0,971,928),7984=>array(78,-19,348,785),7985=>array(78,-19,348,785),7986=>array(-27,-19,407,800),7987=>array(-58,-19,376,800),7988=>array(31,-19,446,800),7989=>array(-6,-19,438,800),7990=>array(-2,-19,348,928),7991=>array(-5,-19,348,928),7992=>array(3,0,391,785),7993=>array(4,0,397,785),7994=>array(2,0,685,800),7995=>array(3,0,693,800),7996=>array(1,0,620,800),7997=>array(2,0,646,800),7998=>array(4,0,512,928),7999=>array(3,0,512,928),8000=>array(43,-14,644,785),8001=>array(43,-14,644,785),8002=>array(43,-14,644,800),8003=>array(43,-14,644,800),8004=>array(43,-14,644,800),8005=>array(43,-14,644,800),8008=>array(3,-14,841,785),8009=>array(4,-14,883,785),8010=>array(2,-14,1171,800),8011=>array(3,-14,1173,800),8012=>array(1,-14,1002,800),8013=>array(2,-14,1032,800),8016=>array(78,-10,629,785),8017=>array(78,-10,629,785),8018=>array(78,-10,629,800),8019=>array(78,-10,629,800),8020=>array(78,-10,629,800),8021=>array(78,-10,629,800),8022=>array(78,-10,629,928),8023=>array(78,-10,629,928),8025=>array(4,0,940,785),8027=>array(3,0,1194,800),8029=>array(2,0,1208,800),8031=>array(3,0,1059,928),8032=>array(43,-13,826,785),8033=>array(43,-13,826,785),8034=>array(43,-13,826,800),8035=>array(43,-13,826,800),8036=>array(43,-13,826,800),8037=>array(43,-13,826,800),8038=>array(43,-13,826,928),8039=>array(43,-13,826,928),8040=>array(3,0,881,785),8041=>array(4,0,931,785),8042=>array(2,0,1219,800),8043=>array(3,-3,1224,800),8044=>array(1,0,1048,800),8045=>array(2,0,1078,800),8046=>array(4,0,1000,928),8047=>array(3,0,1048,928),8048=>array(48,-13,645,800),8049=>array(48,-13,645,800),8050=>array(54,-14,493,800),8051=>array(54,-14,493,800),8052=>array(84,-208,634,800),8053=>array(84,-208,634,800),8054=>array(-26,-19,348,800),8055=>array(77,-19,353,800),8056=>array(43,-14,644,800),8057=>array(43,-14,644,800),8058=>array(78,-10,629,800),8059=>array(78,-10,629,800),8060=>array(43,-13,826,800),8061=>array(43,-13,826,800),8064=>array(48,-208,645,785),8065=>array(48,-208,645,785),8066=>array(48,-208,645,800),8067=>array(48,-208,645,800),8068=>array(48,-208,645,800),8069=>array(48,-208,645,800),8070=>array(48,-208,645,928),8071=>array(48,-208,645,928),8072=>array(5,-208,769,785),8073=>array(5,-208,769,785),8074=>array(2,-208,1036,800),8075=>array(3,-208,1039,800),8076=>array(1,-208,930,800),8077=>array(2,-208,958,800),8078=>array(4,-208,831,928),8079=>array(3,-208,854,928),8080=>array(84,-208,634,785),8081=>array(84,-208,634,785),8082=>array(84,-208,634,800),8083=>array(84,-208,634,800),8084=>array(84,-208,634,800),8085=>array(84,-208,634,800),8086=>array(84,-208,634,928),8087=>array(84,-208,634,928),8088=>array(3,-208,854,785),8089=>array(4,-208,859,785),8090=>array(2,-208,1159,800),8091=>array(3,-208,1158,800),8092=>array(1,-208,1088,800),8093=>array(2,-208,1114,800),8094=>array(4,-208,962,928),8095=>array(3,-208,971,928),8096=>array(43,-208,826,785),8097=>array(43,-208,826,785),8098=>array(43,-208,826,800),8099=>array(43,-208,826,800),8100=>array(43,-208,826,800),8101=>array(43,-208,826,800),8102=>array(43,-208,826,928),8103=>array(43,-208,826,928),8104=>array(3,-208,881,785),8105=>array(4,-208,931,785),8106=>array(2,-208,1219,800),8107=>array(3,-208,1224,800),8108=>array(1,-208,1048,800),8109=>array(2,-208,1078,800),8110=>array(4,-208,1000,928),8111=>array(3,-208,1048,928),8112=>array(48,-13,645,784),8113=>array(48,-13,645,760),8114=>array(48,-208,645,800),8115=>array(48,-208,645,559),8116=>array(48,-208,645,800),8118=>array(48,-13,645,778),8119=>array(48,-208,645,778),8120=>array(5,0,769,927),8121=>array(5,0,769,914),8122=>array(-1,0,872,800),8123=>array(26,0,792,800),8124=>array(5,-208,769,729),8125=>array(183,595,317,785),8126=>array(202,-208,333,-45),8127=>array(183,595,317,785),8128=>array(80,638,420,778),8129=>array(80,654,420,928),8130=>array(84,-208,634,800),8131=>array(84,-208,634,560),8132=>array(84,-208,634,800),8134=>array(84,-208,634,778),8135=>array(84,-208,634,778),8136=>array(-1,0,856,800),8137=>array(-24,0,771,800),8138=>array(-1,0,988,800),8139=>array(-18,0,915,800),8140=>array(92,-208,745,729),8141=>array(34,595,468,800),8142=>array(63,595,478,800),8143=>array(80,595,420,928),8144=>array(3,-19,348,784),8145=>array(20,-19,348,760),8146=>array(-36,-19,348,978),8147=>array(23,-19,372,978),8150=>array(4,-19,348,778),8151=>array(-6,-19,348,928),8152=>array(21,0,350,927),8153=>array(32,0,339,914),8154=>array(-1,0,529,800),8155=>array(-21,0,450,800),8157=>array(40,595,474,800),8158=>array(45,595,489,800),8159=>array(80,595,420,928),8160=>array(78,-10,629,784),8161=>array(78,-10,629,760),8162=>array(78,-10,629,978),8163=>array(78,-10,629,978),8164=>array(84,-208,671,785),8165=>array(84,-208,671,785),8166=>array(78,-10,629,778),8167=>array(78,-10,629,928),8168=>array(-10,0,734,927),8169=>array(-10,0,734,914),8170=>array(-1,0,1030,800),8171=>array(-27,0,992,800),8172=>array(4,0,797,785),8173=>array(46,654,404,978),8174=>array(96,654,445,978),8175=>array(46,616,322,800),8178=>array(43,-208,826,800),8179=>array(43,-208,826,547),8180=>array(43,-208,826,800),8182=>array(43,-13,826,778),8183=>array(43,-208,826,778),8184=>array(-1,-14,1015,800),8185=>array(-19,-14,836,800),8186=>array(-1,0,1057,800),8187=>array(-30,0,867,800),8188=>array(27,-208,823,742),8189=>array(178,616,454,800),8190=>array(183,595,317,785),8208=>array(54,217,361,359),8209=>array(54,217,361,359),8210=>array(54,211,642,337),8211=>array(54,211,446,337),8212=>array(54,211,946,337),8213=>array(0,211,1000,337),8214=>array(127,-236,399,764),8215=>array(0,-236,500,-9),8216=>array(103,418,318,729),8217=>array(63,418,278,729),8218=>array(72,-122,287,189),8219=>array(63,418,278,729),8220=>array(103,418,565,729),8221=>array(92,418,554,729),8222=>array(72,-122,534,189),8223=>array(92,418,554,729),8224=>array(26,-96,470,729),8225=>array(25,-96,470,729),8226=>array(144,196,495,547),8227=>array(144,157,534,586),8228=>array(79,0,255,189),8229=>array(79,0,588,189),8230=>array(79,0,921,189),8231=>array(86,253,262,442),8240=>array(32,-14,1417,742),8241=>array(32,-14,1864,742),8242=>array(20,547,240,729),8243=>array(20,547,423,729),8244=>array(20,547,606,729),8245=>array(20,547,240,729),8246=>array(20,547,425,729),8247=>array(20,547,606,729),8248=>array(101,-238,632,29),8249=>array(77,67,318,519),8250=>array(94,67,335,519),8251=>array(72,0,900,829),8252=>array(69,0,558,729),8253=>array(69,0,515,742),8254=>array(0,663,500,755),8255=>array(-31,-237,859,-79),8256=>array(-31,769,859,927),8257=>array(-52,-235,296,231),8258=>array(20,-37,1003,832),8259=>array(96,220,404,358),8260=>array(-199,-14,366,742),8261=>array(86,-132,389,760),8262=>array(68,-132,371,760),8263=>array(34,0,996,742),8264=>array(69,0,760,742),8265=>array(69,0,760,742),8266=>array(49,-125,464,546),8267=>array(93,-96,579,729),8268=>array(75,189,425,541),8269=>array(75,189,425,541),8270=>array(20,0,503,464),8271=>array(104,-142,329,547),8272=>array(-31,-237,859,927),8273=>array(53,-14,439,797),8274=>array(30,-93,529,729),8275=>array(49,212,951,415),8276=>array(-31,-240,859,-82),8277=>array(152,98,686,631),8278=>array(110,93,574,645),8279=>array(20,547,789,729),8280=>array(76,21,762,708),8281=>array(126,71,712,657),8282=>array(102,0,280,729),8283=>array(49,-170,822,898),8284=>array(55,0,783,729),8285=>array(102,0,278,683),8286=>array(102,0,278,683),8304=>array(29,319,398,742),8305=>array(53,326,164,751),8308=>array(27,326,397,734),8309=>array(47,319,384,734),8310=>array(38,319,394,742),8311=>array(41,326,378,734),8312=>array(38,319,389,742),8313=>array(32,319,388,742),8314=>array(67,326,461,677),8315=>array(67,469,461,534),8316=>array(67,407,461,596),8317=>array(54,252,237,751),8318=>array(50,252,234,751),8319=>array(54,326,406,640),8320=>array(29,-7,398,416),8321=>array(60,0,382,408),8322=>array(53,0,382,416),8323=>array(44,-7,384,416),8324=>array(27,0,397,408),8325=>array(47,-7,384,408),8326=>array(38,-7,394,416),8327=>array(41,0,378,408),8328=>array(38,-7,389,416),8329=>array(32,-7,388,416),8330=>array(67,0,461,351),8331=>array(67,143,461,208),8332=>array(67,81,461,270),8333=>array(54,-74,237,425),8334=>array(50,-74,234,425),8336=>array(53,-8,402,313),8337=>array(53,-8,423,313),8338=>array(53,-8,432,313),8339=>array(10,0,403,306),8340=>array(53,-8,423,313),8341=>array(54,0,406,425),8342=>array(53,0,431,425),8343=>array(54,0,166,425),8344=>array(53,0,607,313),8345=>array(54,0,406,313),8346=>array(53,-117,423,313),8347=>array(33,-8,351,313),8348=>array(53,0,332,393),8352=>array(38,0,892,729),8353=>array(50,-44,634,778),8354=>array(29,-14,667,742),8355=>array(75,0,663,729),8356=>array(61,0,613,742),8357=>array(83,-93,963,640),8358=>array(43,0,794,729),8359=>array(92,-14,1470,729),8360=>array(92,-14,1157,729),8361=>array(13,0,1088,729),8362=>array(39,-14,859,729),8363=>array(30,-182,692,760),8364=>array(-19,-14,629,742),8365=>array(29,0,695,729),8366=>array(12,0,684,729),8367=>array(92,-223,1247,742),8368=>array(14,-14,648,742),8369=>array(34,0,696,729),8370=>array(50,-81,643,809),8371=>array(5,0,691,729),8372=>array(43,-14,816,742),8373=>array(72,-147,629,760),8376=>array(12,0,684,729),8377=>array(50,0,647,729),8378=>array(5,0,745,729),8400=>array(-498,628,-26,760),8401=>array(-470,628,1,760),8406=>array(-470,560,-26,760),8407=>array(-470,560,-26,760),8411=>array(-501,654,-1,774),8412=>array(-595,654,99,774),8417=>array(-470,560,-26,760),8448=>array(20,-24,1083,752),8449=>array(20,-24,1137,752),8450=>array(50,-14,670,742),8451=>array(87,-14,1147,749),8452=>array(64,0,832,729),8453=>array(20,-24,1064,752),8454=>array(20,-24,1117,752),8455=>array(67,-14,616,742),8456=>array(64,-146,684,611),8457=>array(87,0,1002,749),8459=>array(36,-14,1063,746),8460=>array(6,-125,809,747),8461=>array(100,0,788,729),8462=>array(31,0,654,760),8463=>array(10,0,625,760),8464=>array(36,-14,533,742),8465=>array(52,-14,659,743),8466=>array(37,-14,787,742),8467=>array(-14,-14,401,742),8468=>array(9,-14,936,760),8469=>array(92,0,745,729),8470=>array(34,0,1154,729),8471=>array(138,0,862,725),8472=>array(54,-221,658,495),8473=>array(92,0,709,729),8474=>array(50,-146,800,742),8475=>array(31,-14,904,768),8476=>array(41,-14,803,743),8477=>array(98,0,793,729),8478=>array(37,0,859,729),8479=>array(81,-112,694,887),8480=>array(127,444,792,731),8481=>array(3,0,1249,547),8482=>array(144,447,790,729),8483=>array(11,-113,729,885),8484=>array(45,0,709,729),8485=>array(26,-230,540,777),8486=>array(27,0,823,742),8487=>array(27,-14,823,728),8488=>array(-5,-159,670,729),8489=>array(1,0,271,566),8490=>array(92,0,805,729),8491=>array(5,0,769,928),8492=>array(41,-1,853,772),8493=>array(63,-19,767,742),8494=>array(61,-12,793,647),8495=>array(41,-14,591,533),8496=>array(72,-14,668,742),8497=>array(37,-14,860,773),8498=>array(92,0,599,729),8499=>array(38,-18,1156,751),8500=>array(29,-12,436,420),8501=>array(50,-14,761,742),8502=>array(19,-14,687,742),8503=>array(31,-35,439,742),8504=>array(63,-41,633,742),8505=>array(34,0,355,760),8506=>array(44,-27,932,723),8507=>array(69,0,1352,547),8508=>array(34,-14,765,547),8509=>array(-40,-208,700,561),8510=>array(92,0,627,729),8511=>array(92,0,771,729),8512=>array(12,-192,820,719),8513=>array(25,-14,723,742),8514=>array(9,0,527,729),8515=>array(43,0,561,729),8516=>array(0,0,744,729),8517=>array(21,0,786,729),8518=>array(34,-14,752,760),8519=>array(33,-14,635,560),8520=>array(15,0,353,760),8521=>array(-143,-216,354,760),8523=>array(41,-14,811,742),8526=>array(55,0,470,547),8528=>array(49,-14,983,742),8529=>array(49,-14,993,742),8530=>array(49,-14,1441,742),8531=>array(49,-14,989,742),8532=>array(53,-14,989,742),8533=>array(49,-14,989,742),8534=>array(53,-14,989,742),8535=>array(44,-14,989,742),8536=>array(27,-14,989,742),8537=>array(49,-14,999,742),8538=>array(47,-14,999,742),8539=>array(49,-14,994,742),8540=>array(44,-14,994,742),8541=>array(47,-14,994,742),8542=>array(41,-14,994,742),8543=>array(49,-14,814,742),8544=>array(92,0,280,729),8545=>array(92,0,566,729),8546=>array(92,0,853,729),8547=>array(92,0,1094,729),8548=>array(5,0,769,729),8549=>array(5,0,1007,729),8550=>array(5,0,1293,729),8551=>array(5,0,1580,729),8552=>array(92,0,1101,729),8553=>array(19,0,751,729),8554=>array(19,0,1028,729),8555=>array(19,0,1314,729),8556=>array(92,0,610,729),8557=>array(50,-14,670,742),8558=>array(92,0,778,729),8559=>array(92,0,903,729),8560=>array(84,0,259,760),8561=>array(84,0,523,760),8562=>array(84,0,788,760),8563=>array(84,0,946,760),8564=>array(15,0,637,547),8565=>array(15,0,878,760),8566=>array(15,0,1143,760),8567=>array(15,0,1407,760),8568=>array(84,0,954,760),8569=>array(15,0,630,547),8570=>array(15,0,885,760),8571=>array(15,0,1149,760),8572=>array(84,0,259,760),8573=>array(43,-14,526,560),8574=>array(45,-14,632,760),8575=>array(83,0,963,560),8576=>array(52,0,1236,729),8577=>array(92,0,778,729),8578=>array(52,0,1236,729),8579=>array(50,-14,670,742),8580=>array(43,-14,526,560),8581=>array(50,-208,670,742),8585=>array(29,-14,989,742),8592=>array(49,87,781,540),8593=>array(193,0,646,732),8594=>array(57,87,789,540),8595=>array(193,-3,646,729),8596=>array(49,87,789,540),8597=>array(193,-3,646,732),8598=>array(136,66,720,650),8599=>array(136,66,720,650),8600=>array(136,66,720,650),8601=>array(136,66,720,650),8602=>array(49,87,781,540),8603=>array(57,87,789,540),8604=>array(13,84,833,431),8605=>array(5,84,825,431),8606=>array(49,87,781,540),8607=>array(189,0,641,732),8608=>array(57,87,789,540),8609=>array(194,-3,646,729),8610=>array(49,87,793,540),8611=>array(45,87,789,540),8612=>array(49,87,781,540),8613=>array(193,0,646,732),8614=>array(57,87,789,540),8615=>array(193,0,646,732),8616=>array(193,0,646,732),8617=>array(49,87,781,565),8618=>array(57,87,789,565),8619=>array(49,87,781,565),8620=>array(57,87,789,565),8621=>array(49,87,789,540),8622=>array(49,86,789,541),8623=>array(123,-4,714,733),8624=>array(169,0,646,755),8625=>array(192,0,669,755),8626=>array(169,-26,646,729),8627=>array(192,-26,669,729),8628=>array(233,-3,772,621),8629=>array(49,87,673,626),8630=>array(11,198,816,685),8631=>array(22,198,828,685),8632=>array(118,13,788,729),8633=>array(49,-108,789,735),8634=>array(86,45,767,691),8635=>array(71,45,751,691),8636=>array(49,255,781,540),8637=>array(49,87,781,372),8638=>array(361,0,646,732),8639=>array(193,0,478,732),8640=>array(57,255,789,540),8641=>array(57,87,789,372),8642=>array(361,0,646,732),8643=>array(193,0,478,732),8644=>array(49,-59,789,686),8645=>array(47,-3,792,732),8646=>array(49,-59,789,686),8647=>array(49,-59,781,686),8648=>array(46,0,792,732),8649=>array(57,-59,789,686),8650=>array(46,-3,792,729),8651=>array(49,-5,789,632),8652=>array(49,-5,789,632),8653=>array(49,87,781,540),8654=>array(49,87,789,540),8655=>array(57,87,789,540),8656=>array(49,87,781,540),8657=>array(193,0,645,732),8658=>array(57,87,789,540),8659=>array(193,-3,645,729),8660=>array(49,87,789,540),8661=>array(193,-8,645,732),8662=>array(132,-26,755,596),8663=>array(88,-26,711,597),8664=>array(88,16,711,639),8665=>array(132,16,755,639),8666=>array(49,87,781,540),8667=>array(57,87,789,540),8668=>array(44,87,776,540),8669=>array(57,87,789,540),8670=>array(193,0,646,732),8671=>array(193,-3,646,729),8672=>array(49,87,781,540),8673=>array(193,0,646,732),8674=>array(57,87,789,540),8675=>array(193,-3,646,729),8676=>array(49,87,781,540),8677=>array(57,87,789,540),8678=>array(27,46,781,581),8679=>array(151,0,687,754),8680=>array(35,46,789,581),8681=>array(151,-25,687,729),8682=>array(151,0,687,754),8683=>array(151,0,687,754),8684=>array(151,0,687,754),8685=>array(151,0,687,754),8686=>array(151,0,687,754),8687=>array(151,0,687,754),8688=>array(35,46,789,581),8689=>array(60,0,788,729),8690=>array(60,0,788,729),8691=>array(151,-25,687,754),8692=>array(57,87,789,540),8693=>array(47,-3,792,732),8694=>array(57,-223,789,850),8695=>array(49,87,781,540),8696=>array(57,87,789,540),8697=>array(49,87,789,540),8698=>array(49,87,781,540),8699=>array(57,87,789,540),8700=>array(49,87,789,540),8701=>array(27,96,781,531),8702=>array(57,96,811,531),8703=>array(27,96,811,531),8704=>array(5,0,769,729),8705=>array(48,-14,629,742),8706=>array(29,-14,515,674),8707=>array(92,0,610,729),8708=>array(92,-46,610,775),8709=>array(47,-15,810,715),8710=>array(0,0,697,719),8711=>array(0,0,697,719),8712=>array(73,-2,824,730),8713=>array(73,-46,824,775),8714=>array(106,58,644,568),8715=>array(73,-2,824,730),8716=>array(73,-46,824,775),8717=>array(106,58,644,568),8718=>array(98,0,539,553),8719=>array(73,-192,712,719),8720=>array(73,-193,712,718),8721=>array(20,-192,697,719),8722=>array(106,256,732,371),8723=>array(106,0,732,627),8724=>array(49,0,647,729),8725=>array(0,-93,365,729),8726=>array(165,-49,530,772),8727=>array(118,0,720,626),8728=>array(150,151,475,477),8729=>array(102,253,278,442),8730=>array(37,-20,669,837),8731=>array(37,-20,669,933),8732=>array(36,-20,669,924),8733=>array(92,89,617,505),8734=>array(92,89,741,505),8735=>array(106,67,732,693),8736=>array(77,0,820,729),8737=>array(77,-44,820,729),8738=>array(116,-0,732,726),8739=>array(207,-207,322,773),8740=>array(48,-207,482,773),8741=>array(112,-207,417,773),8742=>array(48,-207,482,773),8743=>array(151,0,661,579),8744=>array(151,0,661,579),8745=>array(151,0,661,579),8746=>array(151,0,661,579),8747=>array(15,-227,548,754),8748=>array(15,-227,914,754),8749=>array(15,-227,1280,754),8750=>array(14,-227,548,754),8751=>array(38,-227,938,754),8752=>array(23,-227,1290,754),8753=>array(15,-227,616,754),8754=>array(14,-227,600,754),8755=>array(14,-227,588,754),8756=>array(60,78,637,647),8757=>array(60,78,637,647),8758=>array(59,79,235,647),8759=>array(60,78,637,647),8760=>array(106,256,732,631),8761=>array(106,45,800,584),8762=>array(106,-4,732,631),8763=>array(106,-34,732,660),8764=>array(106,212,732,415),8765=>array(106,212,732,415),8766=>array(65,131,772,497),8767=>array(106,42,732,584),8768=>array(85,0,289,626),8769=>array(106,76,732,551),8770=>array(106,110,732,482),8771=>array(106,144,732,517),8772=>array(106,0,732,637),8773=>array(106,37,732,628),8774=>array(106,-31,732,628),8775=>array(106,-86,732,726),8776=>array(106,110,732,517),8777=>array(106,8,732,614),8778=>array(106,37,732,628),8779=>array(106,-13,732,628),8780=>array(106,37,732,628),8781=>array(105,105,732,585),8782=>array(106,26,732,656),8783=>array(106,172,732,656),8784=>array(106,144,732,744),8785=>array(106,-117,732,743),8786=>array(105,-92,732,719),8787=>array(104,-92,731,719),8788=>array(98,102,965,520),8789=>array(96,102,966,520),8790=>array(106,144,732,482),8791=>array(106,144,732,839),8792=>array(106,144,732,704),8793=>array(106,144,732,840),8794=>array(106,144,732,840),8795=>array(106,144,732,959),8796=>array(106,144,732,952),8797=>array(106,144,732,762),8798=>array(106,144,732,786),8799=>array(106,144,732,903),8800=>array(106,-5,732,631),8801=>array(106,38,732,588),8802=>array(106,-69,732,695),8803=>array(106,-74,732,700),8804=>array(106,0,732,582),8805=>array(106,0,732,582),8806=>array(106,-106,732,617),8807=>array(106,-106,732,617),8808=>array(106,-185,732,617),8809=>array(106,-185,732,617),8810=>array(72,-34,974,660),8811=>array(72,-34,974,660),8812=>array(86,-132,414,759),8813=>array(105,-10,732,700),8814=>array(106,-4,732,690),8815=>array(106,-63,732,631),8816=>array(106,-112,732,645),8817=>array(106,-112,732,645),8818=>array(106,-84,732,582),8819=>array(106,-84,732,582),8820=>array(106,-112,732,645),8821=>array(106,-112,732,645),8822=>array(102,-119,732,678),8823=>array(102,-119,732,678),8824=>array(102,-221,732,779),8825=>array(102,-221,732,779),8826=>array(106,-55,732,681),8827=>array(106,-55,732,681),8828=>array(106,-177,732,684),8829=>array(106,-177,732,684),8830=>array(106,-132,732,684),8831=>array(106,-132,732,684),8832=>array(106,-89,732,781),8833=>array(106,-89,732,781),8834=>array(99,67,739,559),8835=>array(99,65,739,559),8836=>array(99,-96,739,726),8837=>array(99,-100,739,722),8838=>array(99,0,739,636),8839=>array(99,0,739,635),8840=>array(99,-124,739,759),8841=>array(99,-124,739,759),8842=>array(99,-97,739,636),8843=>array(99,-97,739,635),8844=>array(151,0,661,579),8845=>array(151,0,661,579),8846=>array(151,0,661,579),8847=>array(106,0,732,584),8848=>array(106,0,732,584),8849=>array(106,-115,732,667),8850=>array(106,-115,732,667),8851=>array(106,0,690,626),8852=>array(106,0,690,626),8853=>array(91,-14,747,643),8854=>array(91,-14,747,643),8855=>array(91,-14,747,643),8856=>array(91,-13,747,642),8857=>array(91,-14,747,643),8858=>array(91,-14,747,643),8859=>array(91,-14,747,643),8860=>array(91,-14,747,643),8861=>array(91,-14,747,643),8862=>array(77,-29,761,657),8863=>array(77,-29,761,657),8864=>array(77,-29,761,657),8865=>array(77,-29,761,657),8866=>array(85,0,829,705),8867=>array(85,0,829,705),8868=>array(85,0,829,705),8869=>array(85,0,829,705),8870=>array(85,0,457,705),8871=>array(85,0,457,705),8872=>array(85,0,829,705),8873=>array(85,0,829,705),8874=>array(85,0,829,705),8875=>array(85,0,829,705),8876=>array(85,-100,829,805),8877=>array(85,-100,829,805),8878=>array(85,-100,829,805),8879=>array(85,-100,829,805),8880=>array(106,-54,724,681),8881=>array(114,-54,732,681),8882=>array(106,-1,732,628),8883=>array(106,-1,732,628),8884=>array(106,-80,732,706),8885=>array(106,-80,732,706),8886=>array(60,151,940,477),8887=>array(60,151,940,477),8888=>array(60,151,778,477),8889=>array(43,-63,794,689),8890=>array(63,0,480,705),8891=>array(103,0,709,759),8892=>array(103,0,709,759),8893=>array(103,0,709,759),8894=>array(106,0,732,626),8895=>array(106,0,732,626),8896=>array(0,-192,843,719),8897=>array(0,-192,843,719),8898=>array(48,-192,794,719),8899=>array(48,-192,794,719),8900=>array(3,-233,491,807),8901=>array(102,253,278,442),8902=>array(83,112,543,549),8903=>array(106,-56,732,683),8904=>array(106,-48,894,674),8905=>array(106,-48,894,675),8906=>array(106,-48,894,675),8907=>array(106,-48,894,675),8908=>array(106,-48,894,675),8909=>array(106,144,732,517),8910=>array(49,0,763,579),8911=>array(49,0,763,579),8912=>array(93,-22,732,649),8913=>array(106,-22,745,649),8914=>array(83,0,755,639),8915=>array(83,-14,755,625),8916=>array(186,0,652,729),8917=>array(106,-100,732,729),8918=>array(106,30,732,597),8919=>array(106,30,732,597),8920=>array(72,-34,1350,660),8921=>array(72,-34,1350,660),8922=>array(106,-211,732,837),8923=>array(106,-211,732,837),8924=>array(106,0,732,582),8925=>array(106,0,732,582),8926=>array(106,-177,732,684),8927=>array(106,-177,732,684),8928=>array(106,-197,732,808),8929=>array(106,-263,732,742),8930=>array(106,-191,732,817),8931=>array(106,-191,732,817),8932=>array(106,-146,732,636),8933=>array(106,-146,732,636),8934=>array(106,-168,732,582),8935=>array(106,-168,732,582),8936=>array(106,-216,732,684),8937=>array(106,-216,732,684),8938=>array(106,-138,732,808),8939=>array(106,-138,732,808),8940=>array(106,-224,732,894),8941=>array(106,-224,732,894),8942=>array(412,-40,588,735),8943=>array(79,253,921,442),8944=>array(79,-40,921,735),8945=>array(79,-40,921,735),8946=>array(72,-2,1085,730),8947=>array(73,-2,824,730),8948=>array(106,58,644,568),8949=>array(73,-2,824,984),8950=>array(73,-2,824,919),8951=>array(106,58,644,741),8952=>array(73,-207,824,730),8953=>array(73,-2,824,730),8954=>array(72,-2,1085,730),8955=>array(73,-2,824,730),8956=>array(106,58,644,568),8957=>array(72,-2,824,919),8958=>array(106,58,644,741),8959=>array(106,0,791,732),8960=>array(31,-22,572,519),8961=>array(56,152,540,453),8962=>array(64,0,651,596),8963=>array(193,470,646,732),8964=>array(193,0,646,263),8965=>array(193,-12,646,423),8966=>array(193,-12,646,552),8967=>array(139,-39,349,798),8968=>array(86,-132,389,760),8969=>array(68,-132,371,760),8970=>array(86,-132,389,760),8971=>array(68,-132,371,760),8972=>array(352,-77,759,331),8973=>array(49,-77,457,331),8974=>array(352,226,759,634),8975=>array(49,226,457,634),8976=>array(106,140,732,444),8977=>array(3,113,536,646),8984=>array(84,0,843,759),8985=>array(106,140,732,444),8988=>array(86,425,403,760),8989=>array(65,425,383,760),8990=>array(86,-126,403,208),8991=>array(65,-126,383,208),8992=>array(235,-250,586,926),8993=>array(22,-240,373,940),8996=>array(76,215,1076,575),8997=>array(76,0,1076,575),8998=>array(76,0,1414,760),8999=>array(76,0,1076,760),9000=>array(59,0,1385,729),9003=>array(0,0,1338,760),9004=>array(73,-91,800,748),9075=>array(78,-19,348,547),9076=>array(84,-208,671,562),9077=>array(43,-13,826,547),9082=>array(48,-13,645,559),9085=>array(13,-228,850,99),9095=>array(76,0,1100,743),9108=>array(17,0,856,727),9115=>array(63,-252,438,928),9116=>array(63,-252,205,940),9117=>array(63,-240,438,940),9118=>array(63,-252,438,928),9119=>array(295,-252,438,940),9120=>array(63,-240,438,940),9121=>array(63,-252,438,928),9122=>array(63,-252,205,940),9123=>array(63,-240,438,940),9124=>array(63,-252,438,928),9125=>array(295,-252,438,940),9126=>array(63,-240,438,940),9127=>array(306,-261,668,928),9128=>array(82,-247,444,934),9129=>array(306,-240,668,934),9130=>array(306,-256,444,934),9131=>array(82,-261,444,928),9132=>array(306,-247,668,934),9133=>array(82,-240,444,934),9134=>array(235,-250,373,940),9166=>array(27,46,781,729),9167=>array(91,0,854,596),9187=>array(73,-91,800,748),9189=>array(3,75,766,444),9192=>array(39,-129,665,294),9250=>array(-81,-14,671,760),9251=>array(64,-228,651,99),9312=>array(59,-15,788,715),9313=>array(59,-15,788,715),9314=>array(59,-15,788,715),9315=>array(59,-15,788,715),9316=>array(59,-15,788,715),9317=>array(59,-15,788,715),9318=>array(59,-15,788,715),9319=>array(59,-15,788,715),9320=>array(59,-15,788,715),9321=>array(59,-15,788,715),9600=>array(-10,260,779,770),9601=>array(-10,-250,779,-123),9602=>array(-10,-250,779,-5),9603=>array(-10,-250,779,132),9604=>array(-10,-250,779,260),9605=>array(-10,-250,779,387),9606=>array(-10,-250,779,515),9607=>array(-10,-250,779,642),9608=>array(-10,-250,779,770),9609=>array(-10,-250,680,770),9610=>array(-10,-250,582,770),9611=>array(-10,-250,483,770),9612=>array(-10,-250,384,770),9613=>array(-10,-250,286,770),9614=>array(-10,-250,187,770),9615=>array(-10,-250,88,770),9616=>array(384,-250,778,770),9617=>array(-10,-250,680,770),9618=>array(-10,-250,779,770),9619=>array(-10,-250,779,770),9620=>array(-10,642,779,770),9621=>array(680,-250,778,770),9622=>array(-10,-250,385,260),9623=>array(384,-250,779,260),9624=>array(-10,260,385,770),9625=>array(-10,-250,779,770),9626=>array(-10,-250,779,770),9627=>array(-10,-250,779,770),9628=>array(-10,-250,779,770),9629=>array(384,260,779,770),9630=>array(-10,-250,779,770),9631=>array(-10,-250,779,770),9632=>array(91,-124,854,643),9633=>array(91,-124,854,643),9634=>array(91,-124,854,643),9635=>array(91,-124,854,643),9636=>array(91,-124,854,643),9637=>array(91,-124,854,643),9638=>array(91,-124,854,643),9639=>array(91,-124,854,643),9640=>array(91,-124,854,643),9641=>array(91,-124,854,643),9642=>array(91,11,587,509),9643=>array(91,11,587,509),9644=>array(91,75,854,444),9645=>array(91,75,854,444),9646=>array(91,-122,459,642),9647=>array(91,-122,459,642),9648=>array(3,75,766,444),9649=>array(3,75,766,444),9650=>array(3,-124,766,643),9651=>array(3,-124,766,643),9652=>array(3,11,499,509),9653=>array(3,11,499,509),9654=>array(3,-124,766,643),9655=>array(3,-124,766,643),9656=>array(3,11,499,509),9657=>array(3,11,499,509),9658=>array(3,11,766,509),9659=>array(3,11,766,509),9660=>array(3,-124,766,643),9661=>array(3,-124,766,643),9662=>array(3,11,499,509),9663=>array(3,11,499,509),9664=>array(3,-124,766,643),9665=>array(3,-124,766,643),9666=>array(3,11,499,509),9667=>array(3,11,499,509),9668=>array(3,11,766,509),9669=>array(3,11,766,509),9670=>array(3,-124,766,643),9671=>array(3,-124,766,643),9672=>array(3,-124,766,643),9673=>array(55,-125,818,645),9674=>array(3,-233,491,807),9675=>array(55,-125,818,645),9676=>array(56,-125,817,644),9677=>array(55,-125,818,645),9678=>array(55,-125,818,645),9679=>array(55,-123,818,641),9680=>array(55,-123,818,641),9681=>array(55,-123,818,641),9682=>array(55,-123,818,641),9683=>array(55,-123,818,641),9684=>array(55,-123,818,641),9685=>array(55,-123,818,641),9686=>array(55,-125,436,645),9687=>array(91,-125,472,645),9688=>array(91,-10,750,770),9689=>array(91,-250,879,770),9690=>array(91,260,879,770),9691=>array(91,-250,879,260),9692=>array(3,260,385,645),9693=>array(3,260,384,645),9694=>array(3,-125,384,260),9695=>array(3,-125,385,260),9696=>array(3,260,766,645),9697=>array(3,-125,766,260),9698=>array(3,-124,766,643),9699=>array(3,-124,766,643),9700=>array(3,-124,766,643),9701=>array(3,-124,766,643),9702=>array(144,196,495,547),9703=>array(91,-124,854,643),9704=>array(91,-124,854,643),9705=>array(91,-124,854,643),9706=>array(91,-124,854,643),9707=>array(91,-124,854,643),9708=>array(3,-124,766,643),9709=>array(3,-124,766,643),9710=>array(3,-124,766,643),9711=>array(55,-250,1064,770),9712=>array(91,-124,854,643),9713=>array(91,-124,854,643),9714=>array(91,-124,854,643),9715=>array(91,-124,854,643),9716=>array(55,-123,818,641),9717=>array(55,-123,818,641),9718=>array(55,-123,818,641),9719=>array(55,-123,818,641),9720=>array(3,-124,766,643),9721=>array(3,-124,766,643),9722=>array(3,-124,766,643),9723=>array(91,-66,739,585),9724=>array(91,-66,739,585),9725=>array(91,-17,642,537),9726=>array(91,-17,642,537),9727=>array(3,-124,766,643),9728=>array(83,0,813,729),9729=>array(51,-2,949,360),9730=>array(49,0,848,729),9731=>array(83,-0,813,927),9732=>array(64,0,833,880),9733=>array(65,-4,832,723),9734=>array(65,-4,832,723),9735=>array(83,2,490,729),9736=>array(83,0,813,731),9737=>array(83,0,813,730),9738=>array(61,0,828,727),9739=>array(61,0,828,723),9740=>array(61,-1,610,722),9741=>array(61,0,952,723),9742=>array(68,0,1177,729),9743=>array(71,0,1180,729),9744=>array(90,0,807,729),9745=>array(89,0,808,729),9746=>array(89,0,808,729),9747=>array(75,78,457,656),9748=>array(49,0,870,933),9749=>array(74,0,822,731),9750=>array(84,0,813,731),9751=>array(84,0,813,727),9752=>array(78,0,819,729),9753=>array(83,140,813,574),9754=>array(84,113,813,569),9755=>array(84,113,813,569),9756=>array(87,104,810,569),9757=>array(72,0,537,724),9758=>array(86,103,810,569),9759=>array(72,-3,537,720),9760=>array(61,0,835,730),9761=>array(84,0,813,730),9762=>array(83,0,813,730),9763=>array(49,0,848,730),9764=>array(49,-2,620,727),9765=>array(83,0,663,731),9766=>array(83,-1,566,731),9767=>array(83,0,701,911),9768=>array(83,0,462,730),9769=>array(83,-1,813,729),9770=>array(87,0,810,730),9771=>array(83,0,814,731),9772=>array(83,0,627,731),9773=>array(83,0,813,730),9774=>array(83,0,813,730),9775=>array(83,0,813,730),9776=>array(83,0,813,729),9777=>array(83,0,814,729),9778=>array(83,0,813,729),9779=>array(83,0,813,729),9780=>array(83,0,813,729),9781=>array(83,0,813,729),9782=>array(83,0,813,729),9783=>array(83,0,813,729),9784=>array(80,3,817,721),9785=>array(83,-73,959,804),9786=>array(83,-73,959,804),9787=>array(83,-73,959,804),9788=>array(83,0,813,730),9789=>array(358,0,814,730),9790=>array(83,0,539,730),9791=>array(85,-102,528,732),9792=>array(85,-125,647,731),9793=>array(85,-14,647,843),9794=>array(79,-14,831,720),9795=>array(166,0,730,730),9796=>array(219,0,677,730),9797=>array(121,0,774,730),9798=>array(127,0,769,730),9799=>array(240,0,656,730),9800=>array(45,0,851,731),9801=>array(89,0,807,730),9802=>array(94,0,802,731),9803=>array(113,31,784,679),9804=>array(140,0,756,730),9805=>array(53,-180,843,730),9806=>array(83,52,813,653),9807=>array(34,-96,863,730),9808=>array(83,-0,813,730),9809=>array(94,0,802,730),9810=>array(86,153,810,579),9811=>array(157,0,739,730),9812=>array(98,0,798,730),9813=>array(110,0,786,730),9814=>array(167,-1,729,729),9815=>array(214,0,683,730),9816=>array(165,0,732,730),9817=>array(148,-0,748,730),9818=>array(98,0,798,730),9819=>array(110,0,786,730),9820=>array(167,-1,729,729),9821=>array(214,0,683,730),9822=>array(162,0,734,730),9823=>array(148,-0,748,730),9824=>array(158,0,738,729),9825=>array(90,0,806,727),9826=>array(168,0,728,729),9827=>array(111,0,785,729),9828=>array(157,0,739,729),9829=>array(89,0,808,729),9830=>array(168,0,728,729),9831=>array(111,0,785,732),9832=>array(105,-1,791,729),9833=>array(84,-5,339,729),9834=>array(84,-5,554,729),9835=>array(184,-102,712,729),9836=>array(92,-5,804,729),9837=>array(88,-3,392,731),9838=>array(84,0,273,731),9839=>array(84,0,400,731),9840=>array(84,0,664,731),9841=>array(64,0,701,731),9842=>array(84,0,813,709),9843=>array(76,16,820,731),9844=>array(76,16,820,731),9845=>array(76,16,820,731),9846=>array(76,16,820,731),9847=>array(76,16,820,731),9848=>array(76,16,820,731),9849=>array(76,16,820,731),9850=>array(76,16,820,731),9851=>array(84,0,812,704),9852=>array(83,0,814,731),9853=>array(83,0,814,731),9854=>array(83,0,814,731),9855=>array(149,1,747,731),9856=>array(73,0,797,725),9857=>array(73,0,797,725),9858=>array(73,0,797,725),9859=>array(73,0,797,725),9860=>array(73,0,797,725),9861=>array(73,0,797,725),9862=>array(83,0,813,731),9863=>array(83,0,813,731),9864=>array(83,0,813,731),9865=>array(83,0,813,731),9866=>array(83,0,813,98),9867=>array(83,0,813,98),9868=>array(83,0,813,413),9869=>array(83,0,813,413),9870=>array(83,0,813,413),9871=>array(83,0,813,413),9872=>array(168,3,728,731),9873=>array(168,3,728,731),9874=>array(52,0,844,731),9875=>array(97,-10,799,732),9876=>array(131,0,765,729),9877=>array(61,-10,479,732),9878=>array(59,-10,837,732),9879=>array(61,0,835,732),9880=>array(145,0,750,732),9881=>array(95,-17,802,727),9882=>array(128,-9,768,733),9883=>array(127,0,769,728),9884=>array(127,0,769,729),9888=>array(49,0,848,729),9889=>array(83,2,619,730),9890=>array(85,-125,919,731),9891=>array(79,-206,1023,720),9892=>array(85,-186,1109,856),9893=>array(85,-125,837,917),9894=>array(131,-14,727,869),9895=>array(101,-170,741,884),9896=>array(188,-14,650,869),9897=>array(4,133,829,596),9898=>array(188,133,650,597),9899=>array(188,133,650,597),9900=>array(249,194,589,536),9901=>array(175,194,663,536),9902=>array(41,169,797,560),9903=>array(5,194,833,536),9904=>array(103,237,757,540),9905=>array(211,42,626,698),9906=>array(85,-125,647,731),9907=>array(168,-125,646,731),9908=>array(86,-125,646,731),9909=>array(86,-125,646,731),9910=>array(59,-118,791,643),9911=>array(194,-104,595,710),9912=>array(158,-125,543,731),9920=>array(42,4,796,553),9921=>array(42,4,796,724),9922=>array(42,4,796,553),9923=>array(42,4,796,724),9954=>array(85,-14,647,843),9985=>array(11,190,803,635),9986=>array(42,141,784,588),9987=>array(11,94,803,539),9988=>array(36,119,824,613),9990=>array(42,-14,796,742),9991=>array(42,-14,796,742),9992=>array(59,21,782,708),9993=>array(64,107,773,622),9996=>array(212,0,561,742),9997=>array(21,83,802,678),9998=>array(89,75,724,710),9999=>array(26,198,819,530),10000=>array(89,75,724,710),10001=>array(43,185,757,544),10002=>array(67,209,757,520),10003=>array(150,97,667,630),10004=>array(116,87,721,631),10005=>array(126,72,711,657),10006=>array(85,31,752,698),10007=>array(118,-9,701,732),10008=>array(123,0,754,739),10009=>array(55,0,783,729),10010=>array(55,0,783,729),10011=>array(55,0,783,729),10012=>array(55,0,783,729),10013=>array(165,0,673,729),10014=>array(131,0,678,729),10015=>array(155,0,683,729),10016=>array(55,0,783,729),10017=>array(91,-13,747,744),10018=>array(41,-14,797,742),10019=>array(42,-12,796,742),10020=>array(41,-14,797,742),10021=>array(41,-13,797,743),10022=>array(42,-14,796,745),10023=>array(42,-14,796,745),10025=>array(23,-9,814,743),10026=>array(42,-14,796,742),10027=>array(23,-9,814,743),10028=>array(23,-9,814,743),10029=>array(23,-9,814,743),10030=>array(23,-9,814,743),10031=>array(23,-9,814,743),10032=>array(24,12,815,714),10033=>array(64,0,773,729),10034=>array(74,0,764,729),10035=>array(55,0,783,729),10036=>array(31,-14,787,742),10037=>array(41,-14,797,742),10038=>array(91,-14,747,742),10039=>array(41,-14,797,742),10040=>array(41,-14,797,742),10041=>array(41,-14,797,742),10042=>array(55,0,783,729),10043=>array(82,-14,756,742),10044=>array(82,-14,756,742),10045=>array(84,-14,753,742),10046=>array(79,-14,759,742),10047=>array(54,0,784,709),10048=>array(54,0,784,709),10049=>array(41,-14,797,742),10050=>array(42,-14,796,742),10051=>array(79,-14,759,742),10052=>array(89,0,749,729),10053=>array(76,0,762,729),10054=>array(63,2,773,729),10055=>array(79,-13,759,742),10056=>array(47,-13,791,730),10057=>array(47,-13,791,730),10058=>array(41,-13,797,743),10059=>array(41,-13,797,743),10061=>array(50,-10,847,738),10063=>array(60,-49,837,729),10064=>array(60,0,837,777),10065=>array(60,-49,837,729),10066=>array(60,0,837,777),10070=>array(83,-2,813,728),10072=>array(377,-240,460,760),10073=>array(336,-240,502,760),10074=>array(253,-240,585,760),10075=>array(85,395,288,729),10076=>array(59,395,262,729),10077=>array(85,395,528,729),10078=>array(59,395,502,729),10081=>array(155,-93,772,851),10082=>array(202,-17,636,742),10083=>array(163,-17,675,742),10084=>array(54,83,784,645),10085=>array(168,-1,729,729),10086=>array(62,21,724,702),10087=>array(78,169,759,564),10088=>array(196,-139,648,769),10089=>array(196,-139,648,769),10090=>array(264,-132,574,758),10091=>array(264,-132,574,758),10092=>array(215,-240,607,760),10093=>array(232,-240,623,760),10094=>array(142,-240,685,760),10095=>array(153,-240,696,760),10096=>array(167,-240,656,760),10097=>array(183,-240,672,760),10098=>array(346,-241,535,760),10099=>array(303,-241,492,760),10100=>array(175,-163,634,760),10101=>array(204,-163,663,760),10102=>array(59,-15,788,715),10103=>array(59,-15,788,715),10104=>array(59,-15,788,715),10105=>array(59,-15,788,715),10106=>array(59,-15,788,715),10107=>array(59,-15,788,715),10108=>array(59,-15,788,715),10109=>array(59,-15,788,715),10110=>array(59,-15,788,715),10111=>array(59,-15,788,715),10112=>array(4,-52,833,780),10113=>array(4,-52,833,780),10114=>array(4,-52,833,780),10115=>array(4,-52,833,780),10116=>array(4,-52,833,780),10117=>array(4,-52,833,780),10118=>array(4,-52,833,780),10119=>array(4,-52,833,780),10120=>array(4,-52,833,780),10121=>array(4,-52,833,780),10122=>array(4,-52,833,780),10123=>array(4,-52,833,780),10124=>array(4,-52,833,780),10125=>array(4,-52,833,780),10126=>array(4,-52,833,780),10127=>array(4,-52,833,780),10128=>array(4,-52,833,780),10129=>array(4,-52,833,780),10130=>array(4,-52,833,780),10131=>array(4,-52,833,780),10132=>array(57,75,789,552),10136=>array(123,55,682,614),10137=>array(57,100,789,527),10138=>array(123,13,682,572),10139=>array(57,129,789,498),10140=>array(57,57,764,570),10141=>array(57,100,789,527),10142=>array(57,100,789,527),10143=>array(57,100,789,527),10144=>array(57,100,789,527),10145=>array(57,46,811,581),10146=>array(111,94,789,533),10147=>array(111,94,789,533),10148=>array(111,-4,789,631),10149=>array(57,100,789,548),10150=>array(57,79,789,527),10151=>array(240,-7,606,634),10152=>array(57,100,789,527),10153=>array(57,75,765,552),10154=>array(57,75,765,552),10155=>array(21,12,794,586),10156=>array(21,12,794,586),10157=>array(135,0,774,574),10158=>array(135,0,774,574),10159=>array(62,49,799,574),10161=>array(62,49,799,574),10162=>array(154,-20,721,585),10163=>array(63,157,789,470),10164=>array(81,55,682,655),10165=>array(57,173,789,454),10166=>array(82,-29,682,572),10167=>array(82,55,682,655),10168=>array(57,172,789,455),10169=>array(82,-28,682,572),10170=>array(56,84,789,543),10171=>array(73,140,779,487),10172=>array(79,167,774,460),10173=>array(79,118,774,509),10174=>array(57,81,789,546),10181=>array(54,-163,405,769),10182=>array(52,-163,403,769),10208=>array(3,-233,491,807),10214=>array(86,-132,419,760),10215=>array(86,-132,419,760),10216=>array(104,-132,377,759),10217=>array(80,-132,353,759),10218=>array(104,-132,641,759),10219=>array(80,-132,616,759),10224=>array(41,0,797,732),10225=>array(42,-3,798,729),10226=>array(9,45,816,685),10227=>array(22,45,830,685),10228=>array(57,-14,1108,643),10229=>array(49,87,1376,540),10230=>array(57,87,1385,540),10231=>array(49,87,1385,540),10232=>array(49,87,1376,540),10233=>array(57,87,1385,540),10234=>array(49,87,1385,540),10235=>array(49,87,1376,540),10236=>array(57,87,1385,540),10237=>array(49,87,1376,540),10238=>array(57,87,1385,540),10239=>array(57,87,1385,540),10241=>array(146,586,342,781),10242=>array(146,325,342,521),10243=>array(146,325,342,781),10244=>array(146,65,342,261),10245=>array(146,65,342,781),10246=>array(146,65,342,521),10247=>array(146,65,342,781),10248=>array(439,586,635,781),10249=>array(146,586,635,781),10250=>array(146,325,635,781),10251=>array(146,325,635,781),10252=>array(146,65,635,781),10253=>array(146,65,635,781),10254=>array(146,65,635,781),10255=>array(146,65,635,781),10256=>array(439,325,635,521),10257=>array(146,325,635,781),10258=>array(146,325,635,521),10259=>array(146,325,635,781),10260=>array(146,65,635,521),10261=>array(146,65,635,781),10262=>array(146,65,635,521),10263=>array(146,65,635,781),10264=>array(439,325,635,781),10265=>array(146,325,635,781),10266=>array(146,325,635,781),10267=>array(146,325,635,781),10268=>array(146,65,635,781),10269=>array(146,65,635,781),10270=>array(146,65,635,781),10271=>array(146,65,635,781),10272=>array(439,65,635,261),10273=>array(146,65,635,781),10274=>array(146,65,635,521),10275=>array(146,65,635,781),10276=>array(146,65,635,261),10277=>array(146,65,635,781),10278=>array(146,65,635,521),10279=>array(146,65,635,781),10280=>array(439,65,635,781),10281=>array(146,65,635,781),10282=>array(146,65,635,781),10283=>array(146,65,635,781),10284=>array(146,65,635,781),10285=>array(146,65,635,781),10286=>array(146,65,635,781),10287=>array(146,65,635,781),10288=>array(439,65,635,521),10289=>array(146,65,635,781),10290=>array(146,65,635,521),10291=>array(146,65,635,781),10292=>array(146,65,635,521),10293=>array(146,65,635,781),10294=>array(146,65,635,521),10295=>array(146,65,635,781),10296=>array(439,65,635,781),10297=>array(146,65,635,781),10298=>array(146,65,635,781),10299=>array(146,65,635,781),10300=>array(146,65,635,781),10301=>array(146,65,635,781),10302=>array(146,65,635,781),10303=>array(146,65,635,781),10304=>array(146,-195,342,0),10305=>array(146,-195,342,781),10306=>array(146,-195,342,521),10307=>array(146,-195,342,781),10308=>array(146,-195,342,261),10309=>array(146,-195,342,781),10310=>array(146,-195,342,521),10311=>array(146,-195,342,781),10312=>array(146,-195,635,781),10313=>array(146,-195,635,781),10314=>array(146,-195,635,781),10315=>array(146,-195,635,781),10316=>array(146,-195,635,781),10317=>array(146,-195,635,781),10318=>array(146,-195,635,781),10319=>array(146,-195,635,781),10320=>array(146,-195,635,521),10321=>array(146,-195,635,781),10322=>array(146,-195,635,521),10323=>array(146,-195,635,781),10324=>array(146,-195,635,521),10325=>array(146,-195,635,781),10326=>array(146,-195,635,521),10327=>array(146,-195,635,781),10328=>array(146,-195,635,781),10329=>array(146,-195,635,781),10330=>array(146,-195,635,781),10331=>array(146,-195,635,781),10332=>array(146,-195,635,781),10333=>array(146,-195,635,781),10334=>array(146,-195,635,781),10335=>array(146,-195,635,781),10336=>array(146,-195,635,261),10337=>array(146,-195,635,781),10338=>array(146,-195,635,521),10339=>array(146,-195,635,781),10340=>array(146,-195,635,261),10341=>array(146,-195,635,781),10342=>array(146,-195,635,521),10343=>array(146,-195,635,781),10344=>array(146,-195,635,781),10345=>array(146,-195,635,781),10346=>array(146,-195,635,781),10347=>array(146,-195,635,781),10348=>array(146,-195,635,781),10349=>array(146,-195,635,781),10350=>array(146,-195,635,781),10351=>array(146,-195,635,781),10352=>array(146,-195,635,521),10353=>array(146,-195,635,781),10354=>array(146,-195,635,521),10355=>array(146,-195,635,781),10356=>array(146,-195,635,521),10357=>array(146,-195,635,781),10358=>array(146,-195,635,521),10359=>array(146,-195,635,781),10360=>array(146,-195,635,781),10361=>array(146,-195,635,781),10362=>array(146,-195,635,781),10363=>array(146,-195,635,781),10364=>array(146,-195,635,781),10365=>array(146,-195,635,781),10366=>array(146,-195,635,781),10367=>array(146,-195,635,781),10368=>array(439,-195,635,0),10369=>array(146,-195,635,781),10370=>array(146,-195,635,521),10371=>array(146,-195,635,781),10372=>array(146,-195,635,261),10373=>array(146,-195,635,781),10374=>array(146,-195,635,521),10375=>array(146,-195,635,781),10376=>array(439,-195,635,781),10377=>array(146,-195,635,781),10378=>array(146,-195,635,781),10379=>array(146,-195,635,781),10380=>array(146,-195,635,781),10381=>array(146,-195,635,781),10382=>array(146,-195,635,781),10383=>array(146,-195,635,781),10384=>array(439,-195,635,521),10385=>array(146,-195,635,781),10386=>array(146,-195,635,521),10387=>array(146,-195,635,781),10388=>array(146,-195,635,521),10389=>array(146,-195,635,781),10390=>array(146,-195,635,521),10391=>array(146,-195,635,781),10392=>array(439,-195,635,781),10393=>array(146,-195,635,781),10394=>array(146,-195,635,781),10395=>array(146,-195,635,781),10396=>array(146,-195,635,781),10397=>array(146,-195,635,781),10398=>array(146,-195,635,781),10399=>array(146,-195,635,781),10400=>array(439,-195,635,261),10401=>array(146,-195,635,781),10402=>array(146,-195,635,521),10403=>array(146,-195,635,781),10404=>array(146,-195,635,261),10405=>array(146,-195,635,781),10406=>array(146,-195,635,521),10407=>array(146,-195,635,781),10408=>array(439,-195,635,781),10409=>array(146,-195,635,781),10410=>array(146,-195,635,781),10411=>array(146,-195,635,781),10412=>array(146,-195,635,781),10413=>array(146,-195,635,781),10414=>array(146,-195,635,781),10415=>array(146,-195,635,781),10416=>array(439,-195,635,521),10417=>array(146,-195,635,781),10418=>array(146,-195,635,521),10419=>array(146,-195,635,781),10420=>array(146,-195,635,521),10421=>array(146,-195,635,781),10422=>array(146,-195,635,521),10423=>array(146,-195,635,781),10424=>array(439,-195,635,781),10425=>array(146,-195,635,781),10426=>array(146,-195,635,781),10427=>array(146,-195,635,781),10428=>array(146,-195,635,781),10429=>array(146,-195,635,781),10430=>array(146,-195,635,781),10431=>array(146,-195,635,781),10432=>array(146,-195,635,0),10433=>array(146,-195,635,781),10434=>array(146,-195,635,521),10435=>array(146,-195,635,781),10436=>array(146,-195,635,261),10437=>array(146,-195,635,781),10438=>array(146,-195,635,521),10439=>array(146,-195,635,781),10440=>array(146,-195,635,781),10441=>array(146,-195,635,781),10442=>array(146,-195,635,781),10443=>array(146,-195,635,781),10444=>array(146,-195,635,781),10445=>array(146,-195,635,781),10446=>array(146,-195,635,781),10447=>array(146,-195,635,781),10448=>array(146,-195,635,521),10449=>array(146,-195,635,781),10450=>array(146,-195,635,521),10451=>array(146,-195,635,781),10452=>array(146,-195,635,521),10453=>array(146,-195,635,781),10454=>array(146,-195,635,521),10455=>array(146,-195,635,781),10456=>array(146,-195,635,781),10457=>array(146,-195,635,781),10458=>array(146,-195,635,781),10459=>array(146,-195,635,781),10460=>array(146,-195,635,781),10461=>array(146,-195,635,781),10462=>array(146,-195,635,781),10463=>array(146,-195,635,781),10464=>array(146,-195,635,261),10465=>array(146,-195,635,781),10466=>array(146,-195,635,521),10467=>array(146,-195,635,781),10468=>array(146,-195,635,261),10469=>array(146,-195,635,781),10470=>array(146,-195,635,521),10471=>array(146,-195,635,781),10472=>array(146,-195,635,781),10473=>array(146,-195,635,781),10474=>array(146,-195,635,781),10475=>array(146,-195,635,781),10476=>array(146,-195,635,781),10477=>array(146,-195,635,781),10478=>array(146,-195,635,781),10479=>array(146,-195,635,781),10480=>array(146,-195,635,521),10481=>array(146,-195,635,781),10482=>array(146,-195,635,521),10483=>array(146,-195,635,781),10484=>array(146,-195,635,521),10485=>array(146,-195,635,781),10486=>array(146,-195,635,521),10487=>array(146,-195,635,781),10488=>array(146,-195,635,781),10489=>array(146,-195,635,781),10490=>array(146,-195,635,781),10491=>array(146,-195,635,781),10492=>array(146,-195,635,781),10493=>array(146,-195,635,781),10494=>array(146,-195,635,781),10495=>array(146,-195,635,781),10502=>array(49,87,781,540),10503=>array(57,87,789,540),10506=>array(132,0,707,732),10507=>array(132,0,707,732),10560=>array(86,45,726,853),10561=>array(86,45,726,853),10627=>array(125,-163,628,760),10628=>array(125,-163,628,760),10702=>array(106,-258,732,800),10703=>array(106,-1,940,628),10704=>array(106,-1,940,628),10705=>array(106,-48,894,674),10706=>array(106,-48,894,674),10707=>array(106,-48,894,674),10708=>array(106,-48,894,675),10709=>array(106,-48,894,675),10731=>array(3,-233,491,807),10746=>array(106,0,732,627),10747=>array(106,0,732,627),10752=>array(28,-211,972,734),10753=>array(28,-211,972,734),10754=>array(28,-211,972,734),10764=>array(15,-227,1646,754),10765=>array(14,-227,548,754),10766=>array(14,-227,548,754),10767=>array(14,-227,548,754),10768=>array(14,-227,548,754),10769=>array(14,-227,576,754),10770=>array(14,-227,548,754),10771=>array(14,-227,548,754),10772=>array(14,-228,651,754),10773=>array(14,-227,548,754),10774=>array(14,-227,548,754),10775=>array(-30,-227,556,754),10776=>array(14,-227,548,754),10777=>array(14,-227,548,754),10778=>array(14,-227,548,754),10779=>array(15,-227,548,898),10780=>array(15,-372,548,754),10799=>array(125,20,713,607),10858=>array(106,212,732,660),10859=>array(106,-34,732,660),10877=>array(106,-150,732,632),10878=>array(106,-150,732,632),10879=>array(106,-150,732,632),10880=>array(106,-150,732,632),10881=>array(106,-150,732,688),10882=>array(106,-150,732,688),10883=>array(106,-150,732,827),10884=>array(106,-150,732,827),10885=>array(106,-217,732,630),10886=>array(106,-217,732,630),10887=>array(106,-124,732,582),10888=>array(106,-124,732,582),10889=>array(106,-281,732,630),10890=>array(106,-281,732,630),10891=>array(106,-303,732,814),10892=>array(106,-303,732,814),10893=>array(106,-183,732,653),10894=>array(106,-183,732,653),10895=>array(106,-245,732,765),10896=>array(106,-245,732,765),10897=>array(106,-278,732,782),10898=>array(106,-278,732,782),10899=>array(106,-263,732,771),10900=>array(106,-263,732,771),10901=>array(106,-50,732,733),10902=>array(106,-50,732,733),10903=>array(106,-50,732,733),10904=>array(106,-50,732,733),10905=>array(106,-45,732,678),10906=>array(106,-45,732,678),10907=>array(106,-81,732,724),10908=>array(106,-81,732,724),10909=>array(106,13,732,680),10910=>array(106,13,732,680),10911=>array(106,-239,732,746),10912=>array(106,-239,732,746),10926=>array(106,22,732,656),10927=>array(106,-83,732,684),10928=>array(106,-83,732,684),10929=>array(106,-246,732,684),10930=>array(106,-246,732,684),10931=>array(106,-205,732,672),10932=>array(106,-205,732,672),10933=>array(106,-304,732,672),10934=>array(106,-304,732,672),10935=>array(106,-252,732,713),10936=>array(106,-252,732,713),10937=>array(106,-316,732,713),10938=>array(106,-316,732,713),11001=>array(106,-195,732,609),11002=>array(106,-195,732,609),11008=>array(123,-23,744,598),11009=>array(94,-23,715,598),11010=>array(123,-23,744,598),11011=>array(94,-23,715,598),11012=>array(27,46,789,581),11013=>array(27,46,781,581),11014=>array(151,0,687,754),11015=>array(151,-25,687,729),11016=>array(123,-23,744,598),11017=>array(94,-23,715,598),11018=>array(123,-23,744,598),11019=>array(94,-23,715,598),11020=>array(27,46,789,581),11021=>array(151,-25,687,754),11022=>array(57,-25,800,372),11023=>array(57,255,800,652),11024=>array(38,-25,781,372),11025=>array(38,255,781,652),11026=>array(91,-124,854,643),11027=>array(91,-124,854,643),11028=>array(91,-124,854,643),11029=>array(91,-124,854,643),11030=>array(3,-124,766,643),11031=>array(3,-124,766,643),11032=>array(3,-124,766,643),11033=>array(3,-124,766,643),11034=>array(91,-124,854,643),11039=>array(18,-26,852,767),11040=>array(18,-26,852,767),11041=>array(73,-91,800,748),11042=>array(73,-91,800,748),11043=>array(17,-35,856,692),11044=>array(55,-250,1064,770),11091=>array(38,-47,832,788),11092=>array(38,-47,832,788),11360=>array(5,0,610,729),11361=>array(5,0,355,760),11362=>array(-17,0,610,729),11363=>array(6,0,692,729),11364=>array(92,-200,750,729),11365=>array(32,-46,639,594),11366=>array(13,-93,455,822),11367=>array(92,-157,932,729),11368=>array(84,-138,809,760),11369=>array(92,-157,805,729),11370=>array(84,-138,684,760),11371=>array(45,-157,768,729),11372=>array(45,-138,622,547),11373=>array(48,-14,769,741),11374=>array(92,-200,903,729),11375=>array(5,0,769,729),11376=>array(48,-14,769,741),11377=>array(15,0,778,560),11378=>array(30,0,1221,742),11379=>array(35,0,1056,560),11380=>array(38,0,637,586),11381=>array(92,0,606,729),11382=>array(84,0,481,547),11383=>array(64,0,725,552),11385=>array(84,-13,490,760),11386=>array(43,-14,644,560),11387=>array(78,0,467,547),11388=>array(-21,-121,166,425),11389=>array(3,326,484,734),11390=>array(72,-240,670,742),11391=>array(45,-240,680,729),11520=>array(45,-64,609,547),11521=>array(16,-232,625,546),11522=>array(41,-232,629,547),11523=>array(42,-10,585,807),11524=>array(40,-228,613,546),11525=>array(41,-228,988,546),11526=>array(20,-8,668,816),11527=>array(42,-9,974,547),11528=>array(39,0,589,547),11529=>array(41,-227,614,816),11530=>array(39,-9,985,546),11531=>array(42,-8,649,816),11532=>array(39,0,627,816),11533=>array(41,-8,988,546),11534=>array(41,-8,629,546),11535=>array(41,-228,846,816),11536=>array(42,-9,976,816),11537=>array(41,-9,630,816),11538=>array(46,-232,610,546),11539=>array(41,-228,984,661),11540=>array(45,-228,958,546),11541=>array(39,-228,978,816),11542=>array(44,0,628,546),11543=>array(41,-228,630,547),11544=>array(41,-232,627,546),11545=>array(44,-228,628,816),11546=>array(42,-232,610,547),11547=>array(43,-9,658,816),11548=>array(44,-228,989,547),11549=>array(44,-232,619,546),11550=>array(46,-232,639,546),11551=>array(44,-228,615,567),11552=>array(44,-9,1004,546),11553=>array(44,-228,619,816),11554=>array(42,-9,601,626),11555=>array(44,-228,622,816),11556=>array(42,-228,684,546),11557=>array(45,-8,959,816),11568=>array(55,-14,636,380),11569=>array(50,-14,892,742),11570=>array(50,-14,892,742),11571=>array(51,0,674,729),11572=>array(51,0,674,729),11573=>array(56,0,669,729),11574=>array(48,0,627,729),11575=>array(5,0,769,729),11576=>array(5,0,769,729),11577=>array(92,0,610,729),11578=>array(92,0,610,729),11579=>array(73,-14,729,742),11580=>array(73,0,916,729),11581=>array(92,0,754,729),11582=>array(92,0,549,729),11583=>array(92,0,754,729),11584=>array(50,-14,892,742),11585=>array(50,-84,892,815),11586=>array(92,0,281,729),11587=>array(21,0,720,729),11588=>array(92,0,745,729),11589=>array(-30,0,944,729),11590=>array(92,0,598,729),11591=>array(92,0,709,729),11592=>array(73,256,607,445),11593=>array(92,0,610,729),11594=>array(73,0,529,729),11595=>array(64,-14,892,742),11596=>array(82,0,695,729),11597=>array(92,0,745,729),11598=>array(92,0,610,729),11599=>array(92,0,280,729),11600=>array(82,0,695,729),11601=>array(92,0,281,729),11602=>array(42,-14,684,729),11603=>array(55,-14,636,742),11604=>array(50,-14,892,742),11605=>array(50,-95,892,742),11606=>array(92,0,745,729),11607=>array(92,0,281,729),11608=>array(92,0,744,729),11609=>array(50,-14,892,742),11610=>array(50,-14,892,823),11611=>array(50,-14,718,742),11612=>array(79,0,797,729),11613=>array(19,0,751,729),11614=>array(50,-14,718,742),11615=>array(92,0,610,729),11616=>array(5,0,769,729),11617=>array(92,0,745,729),11618=>array(92,0,599,729),11619=>array(50,0,800,729),11620=>array(92,0,654,729),11621=>array(50,0,800,729),11631=>array(64,490,651,729),11800=>array(69,-14,515,728),11807=>array(106,-34,732,415),11810=>array(86,403,389,760),11811=>array(68,403,371,760),11812=>array(86,-132,389,225),11813=>array(68,-132,371,225),11822=>array(69,0,515,742),19904=>array(83,-158,813,729),19905=>array(83,-158,813,729),19906=>array(83,-158,813,729),19907=>array(83,-158,813,729),19908=>array(83,-158,813,729),19909=>array(83,-158,813,729),19910=>array(83,-158,813,729),19911=>array(83,-158,813,729),19912=>array(83,-158,813,729),19913=>array(83,-158,814,729),19914=>array(83,-158,813,729),19915=>array(83,-158,813,729),19916=>array(83,-158,813,729),19917=>array(83,-158,813,729),19918=>array(83,-158,813,729),19919=>array(83,-158,813,729),19920=>array(83,-158,814,729),19921=>array(83,-158,813,729),19922=>array(83,-158,814,729),19923=>array(83,-158,813,729),19924=>array(83,-158,813,729),19925=>array(83,-158,813,729),19926=>array(83,-158,813,729),19927=>array(83,-158,813,729),19928=>array(83,-158,813,729),19929=>array(83,-158,813,729),19930=>array(83,-158,813,729),19931=>array(83,-158,814,729),19932=>array(83,-158,813,729),19933=>array(83,-158,813,729),19934=>array(83,-158,814,729),19935=>array(83,-158,813,729),19936=>array(83,-158,813,729),19937=>array(83,-158,813,729),19938=>array(83,-158,813,729),19939=>array(83,-158,813,729),19940=>array(83,-158,813,729),19941=>array(83,-158,814,729),19942=>array(83,-158,813,729),19943=>array(83,-158,813,729),19944=>array(83,-158,814,729),19945=>array(83,-158,813,729),19946=>array(83,-158,814,729),19947=>array(83,-158,813,729),19948=>array(83,-158,814,729),19949=>array(83,-158,813,729),19950=>array(83,-158,814,729),19951=>array(83,-158,813,729),19952=>array(83,-158,814,729),19953=>array(83,-158,813,729),19954=>array(83,-158,813,729),19955=>array(83,-158,813,729),19956=>array(83,-158,813,729),19957=>array(83,-158,814,729),19958=>array(83,-158,813,729),19959=>array(83,-158,813,729),19960=>array(83,-158,813,729),19961=>array(83,-158,814,729),19962=>array(83,-158,813,729),19963=>array(83,-158,814,729),19964=>array(83,-158,814,729),19965=>array(83,-158,813,729),19966=>array(83,-158,813,729),19967=>array(83,-158,813,729),42192=>array(92,0,692,729),42193=>array(92,0,692,729),42194=>array(41,0,641,729),42195=>array(92,0,778,729),42196=>array(5,0,677,729),42197=>array(5,0,677,729),42198=>array(50,-14,747,742),42199=>array(92,0,805,729),42200=>array(-30,0,683,729),42201=>array(0,-14,439,729),42202=>array(50,-14,670,742),42203=>array(50,-14,670,742),42204=>array(45,0,680,729),42205=>array(92,0,599,729),42206=>array(92,0,599,729),42207=>array(92,0,903,729),42208=>array(92,0,745,729),42209=>array(92,0,610,729),42210=>array(72,-14,647,742),42211=>array(92,0,750,729),42212=>array(20,0,678,729),42213=>array(5,0,769,729),42214=>array(5,0,769,729),42215=>array(92,0,745,729),42216=>array(25,-14,723,742),42217=>array(91,0,530,743),42218=>array(30,0,1072,729),42219=>array(19,0,751,729),42220=>array(-10,0,734,729),42221=>array(70,0,670,729),42222=>array(5,0,769,729),42223=>array(5,0,769,729),42224=>array(92,0,610,729),42225=>array(73,0,591,729),42226=>array(92,0,280,729),42227=>array(50,-14,800,742),42228=>array(92,-14,720,729),42229=>array(92,0,720,743),42230=>array(9,0,527,729),42231=>array(52,0,738,729),42232=>array(73,0,249,189),42233=>array(24,-142,249,189),42234=>array(73,0,601,189),42235=>array(73,-142,601,189),42236=>array(24,-142,249,547),42237=>array(73,0,249,547),42238=>array(73,0,515,405),42239=>array(73,134,515,492),42564=>array(26,-14,601,742),42565=>array(15,-14,511,560),42566=>array(92,0,428,729),42567=>array(83,0,356,547),42572=>array(57,-14,1348,654),42573=>array(47,-13,1126,547),42576=>array(49,0,1142,729),42577=>array(20,0,946,547),42580=>array(55,-14,1082,742),42581=>array(44,-14,888,560),42582=>array(92,0,1088,729),42583=>array(84,-14,880,560),42594=>array(60,-157,1058,729),42595=>array(56,-138,900,547),42596=>array(46,0,1069,729),42597=>array(55,0,888,547),42598=>array(92,0,1233,729),42599=>array(84,0,973,547),42600=>array(50,-14,800,742),42601=>array(43,-14,644,560),42602=>array(50,-14,987,742),42603=>array(43,-14,825,560),42604=>array(50,-14,1356,742),42605=>array(43,-14,1063,560),42606=>array(28,-208,933,743),42634=>array(5,-200,883,729),42635=>array(4,-216,709,547),42636=>array(5,0,677,729),42637=>array(4,0,575,547),42644=>array(81,0,716,729),42645=>array(84,0,634,760),42760=>array(96,0,404,693),42761=>array(96,0,404,693),42762=>array(96,0,404,693),42763=>array(96,0,404,693),42764=>array(96,0,404,693),42765=>array(96,0,404,693),42766=>array(96,0,404,693),42767=>array(96,0,404,693),42768=>array(96,0,404,693),42769=>array(96,0,404,693),42770=>array(96,0,404,693),42771=>array(96,0,404,693),42772=>array(96,0,404,693),42773=>array(96,0,404,693),42774=>array(96,0,404,693),42779=>array(58,326,342,736),42780=>array(58,324,342,734),42781=>array(88,326,199,734),42782=>array(88,326,199,734),42783=>array(88,0,199,408),42786=>array(67,0,409,729),42787=>array(67,0,355,547),42788=>array(56,224,479,742),42789=>array(56,42,479,560),42790=>array(92,-200,745,729),42791=>array(84,-216,634,760),42792=>array(5,-216,986,729),42793=>array(13,-215,810,702),42794=>array(67,-14,616,742),42795=>array(54,-202,493,560),42800=>array(92,0,473,547),42801=>array(52,-14,548,560),42802=>array(5,0,1344,729),42803=>array(43,-14,973,560),42804=>array(5,-14,1234,742),42805=>array(43,-14,1021,560),42806=>array(5,-14,1124,729),42807=>array(43,-14,970,560),42808=>array(5,0,1074,729),42809=>array(43,-14,907,560),42810=>array(5,0,1074,729),42811=>array(43,-14,907,560),42812=>array(5,-216,1030,729),42813=>array(43,-216,907,560),42814=>array(33,-14,653,742),42815=>array(43,-14,526,560),42816=>array(5,0,812,729),42817=>array(6,0,708,760),42822=>array(92,0,822,729),42823=>array(84,0,458,760),42824=>array(41,0,655,729),42825=>array(59,0,473,760),42826=>array(16,-14,902,742),42827=>array(5,-14,809,560),42830=>array(50,-14,1356,742),42831=>array(43,-14,1063,560),42832=>array(16,0,692,729),42833=>array(5,-208,671,560),42834=>array(34,0,907,729),42835=>array(34,-208,892,560),42838=>array(50,-188,800,742),42839=>array(45,-208,711,559),42852=>array(16,0,692,729),42853=>array(5,-208,671,760),42854=>array(16,0,692,729),42855=>array(5,-208,671,760),42880=>array(27,0,545,729),42881=>array(84,-208,259,547),42882=>array(84,-208,730,742),42883=>array(84,-208,634,560),42889=>array(112,0,288,547),42890=>array(83,141,303,405),42891=>array(140,245,316,729),42892=>array(95,458,211,729),42893=>array(81,0,716,729),42894=>array(84,-216,680,760),42896=>array(92,-157,868,729),42897=>array(84,-138,725,560),42912=>array(-11,-14,832,742),42913=>array(-11,-216,727,559),42914=>array(-11,0,805,729),42915=>array(-11,0,684,760),42916=>array(-11,0,848,729),42917=>array(-11,0,723,560),42918=>array(-11,0,781,729),42919=>array(-11,0,504,560),42920=>array(-11,-14,731,742),42921=>array(-11,-14,606,560),42922=>array(-68,0,794,729),43002=>array(84,0,972,547),43003=>array(84,0,591,729),43004=>array(41,0,641,729),43005=>array(92,0,903,729),43006=>array(92,0,280,928),43007=>array(31,0,1294,729),61184=>array(91,602,317,693),61185=>array(48,451,338,693),61186=>array(26,301,363,693),61187=>array(17,150,373,693),61188=>array(13,0,378,693),61189=>array(48,451,338,693),61190=>array(91,451,317,543),61191=>array(48,301,338,543),61192=>array(26,150,363,543),61193=>array(17,0,373,543),61194=>array(26,301,363,693),61195=>array(48,301,338,543),61196=>array(91,301,317,393),61197=>array(48,150,338,393),61198=>array(26,0,363,393),61199=>array(17,150,373,693),61200=>array(26,149,363,542),61201=>array(48,150,338,393),61202=>array(91,150,317,242),61203=>array(48,0,338,242),61204=>array(13,0,378,693),61205=>array(17,0,373,543),61206=>array(26,0,363,393),61207=>array(48,0,338,242),61208=>array(91,0,317,92),61209=>array(96,0,188,693),62464=>array(49,-14,563,819),62465=>array(49,-15,563,823),62466=>array(49,-14,604,828),62467=>array(49,0,853,828),62468=>array(49,-15,563,828),62469=>array(49,-15,563,828),62470=>array(29,-15,612,828),62471=>array(49,-14,846,828),62472=>array(49,0,541,828),62473=>array(49,-14,563,820),62474=>array(49,-6,1114,828),62475=>array(49,-14,563,828),62476=>array(63,-15,578,820),62477=>array(54,0,839,828),62478=>array(49,-15,563,819),62479=>array(49,-15,563,840),62480=>array(49,0,875,828),62481=>array(63,-14,578,819),62482=>array(44,-14,699,828),62483=>array(34,-14,570,828),62484=>array(49,-14,837,828),62485=>array(49,-14,563,819),62486=>array(49,0,858,828),62487=>array(49,-14,563,820),62488=>array(44,-14,558,828),62489=>array(64,0,579,828),62490=>array(50,-15,628,820),62491=>array(49,-14,563,819),62492=>array(63,-14,577,828),62493=>array(49,-14,581,820),62494=>array(63,-14,578,819),62495=>array(24,-14,546,828),62496=>array(49,-15,563,828),62497=>array(63,-15,577,828),62498=>array(49,-73,563,828),62499=>array(49,-15,563,830),62500=>array(49,-15,569,828),62501=>array(49,-14,627,828),62502=>array(49,-14,914,828),62504=>array(45,-228,960,816),62505=>array(54,-223,791,843),62506=>array(54,-14,510,761),62507=>array(54,-14,510,773),62508=>array(54,-14,510,866),62509=>array(54,-14,510,812),62510=>array(54,-14,510,877),62511=>array(54,-14,510,803),62512=>array(54,-232,501,761),62513=>array(54,-232,501,793),62514=>array(54,-232,501,891),62515=>array(54,-232,501,803),62516=>array(54,0,520,761),62517=>array(54,0,520,793),62518=>array(54,0,520,803),62519=>array(54,-0,770,761),62520=>array(54,-0,770,773),62521=>array(54,-0,770,884),62522=>array(54,-0,770,793),62523=>array(54,-0,770,803),62524=>array(54,-232,557,761),62525=>array(54,-232,557,773),62526=>array(54,-232,557,894),62527=>array(54,-232,557,793),62528=>array(54,-232,557,803),62529=>array(54,-232,557,844),63173=>array(43,-14,644,760),64256=>array(19,0,819,760),64257=>array(21,0,657,760),64258=>array(19,0,657,760),64259=>array(19,0,1031,760),64260=>array(19,0,1032,760),64261=>array(19,0,785,760),64262=>array(52,-14,997,742),64275=>array(74,-14,1300,760),64276=>array(78,-14,1301,760),64277=>array(78,-208,1300,760),64278=>array(78,-208,1300,760),64279=>array(78,-208,1629,760),64285=>array(66,32,228,547),64286=>array(182,635,510,780),64287=>array(66,32,500,547),64288=>array(38,0,590,547),64289=>array(85,0,855,547),64290=>array(43,0,731,547),64291=>array(91,0,778,547),64292=>array(43,0,730,547),64293=>array(43,0,730,739),64294=>array(91,0,778,547),64295=>array(43,0,730,547),64296=>array(47,-4,730,547),64297=>array(106,256,732,627),64298=>array(20,0,750,710),64299=>array(20,0,750,723),64300=>array(20,0,750,710),64301=>array(20,0,750,710),64302=>array(84,-171,644,547),64303=>array(84,-217,644,547),64304=>array(84,-171,644,547),64305=>array(43,0,567,547),64306=>array(43,-9,418,547),64307=>array(43,0,545,547),64308=>array(91,0,596,547),64309=>array(43,0,346,547),64310=>array(43,0,442,547),64312=>array(90,-13,624,553),64313=>array(43,164,369,547),64314=>array(43,-240,487,547),64315=>array(43,0,511,547),64316=>array(43,0,527,711),64318=>array(43,0,633,554),64320=>array(43,0,362,547),64321=>array(90,-13,624,547),64323=>array(91,-240,584,547),64324=>array(91,0,603,547),64326=>array(33,0,564,547),64327=>array(91,-240,660,546),64328=>array(43,0,511,547),64329=>array(20,0,750,547),64330=>array(10,-4,592,547),64331=>array(91,0,252,710),64332=>array(43,0,567,710),64333=>array(43,0,511,710),64334=>array(91,0,603,710),64335=>array(43,0,652,729),64338=>array(63,-244,921,327),64339=>array(63,-244,1068,327),64340=>array(-10,-244,292,293),64341=>array(-10,-244,418,293),64342=>array(63,-244,921,327),64343=>array(63,-244,1068,327),64344=>array(-10,-244,302,293),64345=>array(-10,-244,418,293),64346=>array(63,-244,921,327),64347=>array(63,-244,1068,327),64348=>array(-10,-244,302,293),64349=>array(-10,-244,418,293),64350=>array(63,-5,921,566),64351=>array(63,-5,1068,566),64352=>array(-10,0,292,640),64353=>array(-10,0,418,640),64354=>array(63,-5,921,566),64355=>array(63,-5,1068,566),64356=>array(-10,0,302,640),64357=>array(-10,0,418,640),64358=>array(63,-5,921,599),64359=>array(63,-5,1068,599),64360=>array(-10,0,333,672),64361=>array(-10,0,418,672),64362=>array(63,-24,1082,786),64363=>array(63,-29,1201,786),64364=>array(-10,0,575,786),64365=>array(-10,0,729,786),64366=>array(63,-24,1082,786),64367=>array(63,-29,1201,786),64368=>array(-10,0,575,786),64369=>array(-10,0,729,786),64370=>array(77,-244,720,425),64371=>array(77,-244,730,425),64372=>array(-10,-244,628,405),64373=>array(-10,-244,730,405),64374=>array(77,-244,720,425),64375=>array(77,-244,730,425),64376=>array(-10,-117,628,405),64377=>array(-10,-117,730,405),64378=>array(77,-244,720,425),64379=>array(77,-244,730,425),64380=>array(-10,-244,628,405),64381=>array(-10,-244,730,405),64382=>array(77,-244,720,425),64383=>array(77,-244,730,425),64384=>array(-10,-244,628,405),64385=>array(-10,-244,730,405),64386=>array(61,-146,442,415),64387=>array(61,-146,587,415),64388=>array(61,-15,442,586),64389=>array(61,-15,587,586),64390=>array(61,-15,442,708),64391=>array(61,-15,587,708),64392=>array(61,-15,442,746),64393=>array(61,-15,587,746),64394=>array(-42,-244,508,615),64395=>array(-42,-244,632,615),64396=>array(-42,-244,520,648),64397=>array(-42,-244,632,648),64398=>array(63,-39,1024,760),64399=>array(63,-39,1034,760),64400=>array(-10,0,582,760),64401=>array(-10,0,591,760),64402=>array(63,-39,1024,910),64403=>array(63,-39,1034,910),64404=>array(-10,0,582,910),64405=>array(-10,0,591,910),64406=>array(63,-293,1024,910),64407=>array(63,-293,1034,910),64408=>array(-10,-269,582,910),64409=>array(-10,-269,591,910),64410=>array(63,-39,1024,910),64411=>array(63,-39,1034,910),64412=>array(-10,0,582,910),64413=>array(-10,0,591,910),64414=>array(62,-165,779,366),64415=>array(62,-244,910,287),64416=>array(62,-165,779,636),64417=>array(62,-244,910,514),64418=>array(-10,0,333,672),64419=>array(-10,0,418,672),64426=>array(70,-33,877,506),64427=>array(70,-244,890,369),64428=>array(-10,-33,633,506),64429=>array(-10,-244,670,369),64467=>array(70,-27,814,854),64468=>array(70,-27,941,854),64469=>array(-10,0,582,928),64470=>array(-10,0,591,928),64473=>array(-42,-244,547,556),64474=>array(-42,-244,637,556),64488=>array(-10,0,292,293),64489=>array(-10,0,418,293),64508=>array(63,-107,863,462),64509=>array(63,-126,1021,291),64510=>array(-10,-166,302,293),64511=>array(-10,-166,418,293),65056=>array(-419,735,0,880),65057=>array(0,735,419,880),65058=>array(-362,756,0,894),65059=>array(0,756,362,894),65136=>array(28,591,313,825),65137=>array(-10,0,352,825),65138=>array(28,591,313,881),65139=>array(51,0,356,177),65140=>array(28,-239,313,-5),65142=>array(28,591,313,723),65143=>array(-10,0,352,723),65144=>array(28,590,313,881),65145=>array(-10,0,352,881),65146=>array(28,-137,313,-5),65147=>array(-10,-137,352,125),65148=>array(9,599,333,869),65149=>array(-10,0,352,869),65150=>array(36,610,304,878),65151=>array(-10,0,352,878),65152=>array(73,20,437,493),65153=>array(-20,0,362,955),65154=>array(-20,0,385,955),65155=>array(75,0,259,993),65156=>array(75,0,385,993),65157=>array(-42,-244,547,603),65158=>array(-42,-244,637,603),65159=>array(76,-245,259,760),65160=>array(76,-245,385,760),65161=>array(63,-107,863,603),65162=>array(63,-126,1021,480),65163=>array(-10,0,292,627),65164=>array(-10,0,418,627),65165=>array(84,0,259,760),65166=>array(84,0,385,760),65167=>array(63,-149,921,327),65168=>array(63,-149,1068,327),65169=>array(-10,-173,292,293),65170=>array(-10,-173,418,293),65171=>array(48,-30,540,513),65172=>array(65,0,616,513),65173=>array(63,-5,921,415),65174=>array(63,-5,1068,415),65175=>array(-10,0,302,488),65176=>array(-10,0,418,488),65177=>array(63,-5,921,537),65178=>array(63,-5,1068,537),65179=>array(-10,0,302,610),65180=>array(-10,0,418,610),65181=>array(77,-244,720,425),65182=>array(77,-244,730,425),65183=>array(-10,-173,628,405),65184=>array(-10,-173,730,405),65185=>array(77,-244,720,425),65186=>array(77,-244,730,425),65187=>array(-10,0,628,405),65188=>array(-10,0,730,405),65189=>array(77,-244,720,579),65190=>array(77,-244,730,579),65191=>array(-10,0,628,530),65192=>array(-10,0,730,530),65193=>array(61,-15,442,415),65194=>array(61,-15,587,415),65195=>array(61,-15,442,579),65196=>array(61,-15,587,579),65197=>array(-42,-244,508,269),65198=>array(-42,-244,632,269),65199=>array(-42,-244,508,457),65200=>array(-42,-244,632,457),65201=>array(63,-244,1297,366),65202=>array(63,-244,1423,366),65203=>array(-10,-14,901,366),65204=>array(-10,-14,1027,366),65205=>array(63,-244,1297,586),65206=>array(63,-244,1423,586),65207=>array(-10,-14,901,586),65208=>array(-10,-14,1027,586),65209=>array(63,-244,1265,362),65210=>array(63,-244,1374,362),65211=>array(-10,0,886,362),65212=>array(-10,0,995,362),65213=>array(63,-244,1265,457),65214=>array(63,-244,1374,457),65215=>array(-10,0,886,481),65216=>array(-10,0,995,481),65217=>array(70,0,971,760),65218=>array(70,0,1081,760),65219=>array(-10,0,875,760),65220=>array(-10,0,984,760),65221=>array(70,0,971,760),65222=>array(70,0,1081,760),65223=>array(-10,0,875,760),65224=>array(-10,0,984,760),65225=>array(87,-244,720,521),65226=>array(57,-244,693,382),65227=>array(-10,0,583,521),65228=>array(-10,0,574,382),65229=>array(87,-244,720,652),65230=>array(57,-244,693,530),65231=>array(-10,0,583,652),65232=>array(-10,0,574,530),65233=>array(63,-24,1082,627),65234=>array(63,-29,1201,627),65235=>array(-10,0,575,627),65236=>array(-10,0,729,627),65237=>array(52,-215,825,635),65238=>array(52,-244,911,476),65239=>array(-10,0,575,635),65240=>array(-10,0,729,635),65241=>array(70,-27,814,760),65242=>array(70,-27,941,760),65243=>array(-10,0,582,760),65244=>array(-10,0,591,760),65245=>array(70,-142,778,760),65246=>array(70,-142,902,760),65247=>array(-10,0,292,760),65248=>array(-10,0,418,760),65249=>array(68,-244,660,369),65250=>array(68,-244,794,311),65251=>array(-10,-23,546,311),65252=>array(-10,-23,680,311),65253=>array(62,-165,779,457),65254=>array(62,-244,910,383),65255=>array(-10,0,292,481),65256=>array(-10,0,418,481),65257=>array(48,-30,540,358),65258=>array(65,0,616,366),65259=>array(-10,-33,633,506),65260=>array(-10,-244,670,369),65261=>array(-42,-244,547,322),65262=>array(-42,-244,637,322),65263=>array(63,-107,863,462),65264=>array(63,-126,1021,291),65265=>array(63,-244,863,462),65266=>array(63,-244,1021,291),65267=>array(-10,-166,302,293),65268=>array(-10,-166,418,293),65269=>array(-62,-15,643,882),65270=>array(-62,-15,769,882),65271=>array(33,-15,643,944),65272=>array(33,-15,769,944),65273=>array(41,-245,643,760),65274=>array(41,-245,769,760),65275=>array(41,-15,643,760),65276=>array(41,-15,769,760),65533=>array(24,-139,1089,926),65535=>array(50,-177,550,705)); -$cw=array(0=>600,32=>348,33=>456,34=>521,35=>838,36=>696,37=>1002,38=>872,39=>306,40=>457,41=>457,42=>523,43=>838,44=>380,45=>415,46=>380,47=>365,48=>696,49=>696,50=>696,51=>696,52=>696,53=>696,54=>696,55=>696,56=>696,57=>696,58=>400,59=>400,60=>838,61=>838,62=>838,63=>580,64=>1000,65=>774,66=>762,67=>734,68=>830,69=>683,70=>683,71=>821,72=>837,73=>372,74=>372,75=>775,76=>637,77=>995,78=>837,79=>850,80=>733,81=>850,82=>770,83=>720,84=>682,85=>812,86=>774,87=>1103,88=>771,89=>724,90=>725,91=>457,92=>365,93=>457,94=>838,95=>500,96=>500,97=>675,98=>716,99=>593,100=>716,101=>678,102=>435,103=>716,104=>712,105=>343,106=>343,107=>665,108=>343,109=>1042,110=>712,111=>687,112=>716,113=>716,114=>493,115=>595,116=>478,117=>712,118=>652,119=>924,120=>645,121=>652,122=>582,123=>712,124=>365,125=>712,126=>838,160=>348,161=>456,162=>696,163=>696,164=>636,165=>696,166=>365,167=>500,168=>500,169=>1000,170=>564,171=>646,172=>838,173=>415,174=>1000,175=>500,176=>500,177=>838,178=>438,179=>438,180=>500,181=>736,182=>636,183=>380,184=>500,185=>438,186=>564,187=>646,188=>1035,189=>1035,190=>1035,191=>580,192=>774,193=>774,194=>774,195=>774,196=>774,197=>774,198=>1085,199=>734,200=>683,201=>683,202=>683,203=>683,204=>372,205=>372,206=>372,207=>372,208=>838,209=>837,210=>850,211=>850,212=>850,213=>850,214=>850,215=>838,216=>850,217=>812,218=>812,219=>812,220=>812,221=>724,222=>738,223=>719,224=>675,225=>675,226=>675,227=>675,228=>675,229=>675,230=>1048,231=>593,232=>678,233=>678,234=>678,235=>678,236=>343,237=>343,238=>343,239=>343,240=>687,241=>712,242=>687,243=>687,244=>687,245=>687,246=>687,247=>838,248=>687,249=>712,250=>712,251=>712,252=>712,253=>652,254=>716,255=>652,256=>774,257=>675,258=>774,259=>675,260=>774,261=>675,262=>734,263=>593,264=>734,265=>593,266=>734,267=>593,268=>734,269=>593,270=>830,271=>716,272=>838,273=>716,274=>683,275=>678,276=>683,277=>678,278=>683,279=>678,280=>683,281=>678,282=>683,283=>678,284=>821,285=>716,286=>821,287=>716,288=>821,289=>716,290=>821,291=>716,292=>837,293=>712,294=>974,295=>790,296=>372,297=>343,298=>372,299=>343,300=>372,301=>343,302=>372,303=>343,304=>372,305=>343,306=>744,307=>686,308=>372,309=>343,310=>775,311=>665,312=>665,313=>637,314=>343,315=>637,316=>343,317=>637,318=>479,319=>637,320=>557,321=>642,322=>371,323=>837,324=>712,325=>837,326=>712,327=>837,328=>712,329=>983,330=>837,331=>712,332=>850,333=>687,334=>850,335=>687,336=>850,337=>687,338=>1167,339=>1094,340=>770,341=>493,342=>770,343=>493,344=>770,345=>493,346=>720,347=>595,348=>720,349=>595,350=>720,351=>595,352=>720,353=>595,354=>682,355=>478,356=>682,357=>478,358=>682,359=>478,360=>812,361=>712,362=>812,363=>712,364=>812,365=>712,366=>812,367=>712,368=>812,369=>712,370=>812,371=>712,372=>1103,373=>924,374=>724,375=>652,376=>724,377=>725,378=>582,379=>725,380=>582,381=>725,382=>582,383=>435,384=>716,385=>811,386=>762,387=>716,388=>762,389=>716,390=>734,391=>734,392=>593,393=>838,394=>879,395=>757,396=>716,397=>688,398=>683,399=>849,400=>696,401=>683,402=>435,403=>821,404=>793,405=>1045,406=>436,407=>389,408=>775,409=>665,410=>360,411=>592,412=>1042,413=>837,414=>712,415=>850,416=>874,417=>687,418=>1083,419=>912,420=>782,421=>716,422=>770,423=>720,424=>595,425=>683,426=>552,427=>478,428=>707,429=>478,430=>682,431=>835,432=>712,433=>850,434=>813,435=>797,436=>778,437=>725,438=>582,439=>772,440=>772,441=>641,442=>582,443=>696,444=>772,445=>641,446=>573,447=>716,448=>372,449=>659,450=>544,451=>372,452=>1555,453=>1412,454=>1298,455=>1009,456=>980,457=>686,458=>1209,459=>1180,460=>1055,461=>774,462=>675,463=>372,464=>343,465=>850,466=>687,467=>812,468=>712,469=>812,470=>712,471=>812,472=>712,473=>812,474=>712,475=>812,476=>712,477=>678,478=>774,479=>675,480=>774,481=>675,482=>1085,483=>1048,484=>821,485=>716,486=>821,487=>716,488=>775,489=>665,490=>850,491=>687,492=>850,493=>687,494=>772,495=>582,496=>343,497=>1555,498=>1412,499=>1298,500=>821,501=>716,502=>1289,503=>787,504=>837,505=>712,506=>774,507=>675,508=>1085,509=>1048,510=>850,511=>687,512=>774,513=>675,514=>774,515=>675,516=>683,517=>678,518=>683,519=>678,520=>372,521=>343,522=>372,523=>343,524=>850,525=>687,526=>850,527=>687,528=>770,529=>493,530=>770,531=>493,532=>812,533=>712,534=>812,535=>712,536=>720,537=>595,538=>682,539=>478,540=>690,541=>607,542=>837,543=>712,544=>837,545=>865,546=>809,547=>659,548=>725,549=>582,550=>774,551=>675,552=>683,553=>678,554=>850,555=>687,556=>850,557=>687,558=>850,559=>687,560=>850,561=>687,562=>724,563=>652,564=>492,565=>867,566=>512,567=>343,568=>1088,569=>1088,570=>774,571=>734,572=>593,573=>637,574=>682,575=>595,576=>582,577=>782,578=>614,579=>762,580=>812,581=>774,582=>683,583=>678,584=>372,585=>343,586=>860,587=>791,588=>770,589=>493,590=>724,591=>652,592=>675,593=>716,594=>716,595=>716,596=>593,597=>593,598=>717,599=>792,600=>678,601=>678,602=>876,603=>557,604=>545,605=>815,606=>731,607=>343,608=>792,609=>716,610=>627,611=>644,612=>635,613=>712,614=>712,615=>712,616=>545,617=>440,618=>545,619=>559,620=>693,621=>343,622=>841,623=>1042,624=>1042,625=>1042,626=>712,627=>793,628=>707,629=>687,630=>909,631=>681,632=>796,633=>538,634=>538,635=>650,636=>493,637=>493,638=>596,639=>596,640=>642,641=>642,642=>595,643=>415,644=>435,645=>605,646=>552,647=>478,648=>478,649=>920,650=>772,651=>670,652=>652,653=>924,654=>652,655=>724,656=>694,657=>684,658=>641,659=>641,660=>573,661=>573,662=>573,663=>573,664=>850,665=>633,666=>731,667=>685,668=>691,669=>343,670=>732,671=>539,672=>792,673=>573,674=>573,675=>1156,676=>1214,677=>1155,678=>975,679=>769,680=>929,681=>1026,682=>862,683=>780,684=>591,685=>415,686=>677,687=>789,688=>456,689=>456,690=>219,691=>315,692=>315,693=>315,694=>411,695=>591,696=>417,697=>302,698=>521,699=>380,700=>380,701=>380,702=>366,703=>366,704=>326,705=>326,706=>500,707=>500,708=>500,709=>500,710=>500,711=>500,712=>306,713=>500,714=>500,715=>500,716=>306,717=>500,718=>500,719=>500,720=>337,721=>337,722=>366,723=>366,724=>500,725=>500,726=>416,727=>328,728=>500,729=>500,730=>500,731=>500,732=>500,733=>500,734=>351,735=>500,736=>412,737=>219,738=>381,739=>413,740=>326,741=>500,742=>500,743=>500,744=>500,745=>500,748=>500,749=>500,750=>657,755=>500,759=>500,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0,779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0,795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0,811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0,827=>0,828=>0,829=>0,830=>0,831=>0,832=>0,833=>0,834=>0,835=>0,836=>0,837=>0,838=>0,839=>0,840=>0,841=>0,842=>0,843=>0,844=>0,845=>0,846=>0,847=>0,849=>0,850=>0,851=>0,855=>0,856=>0,858=>0,860=>0,861=>0,862=>0,863=>0,864=>0,865=>0,866=>0,880=>698,881=>565,882=>1022,883=>836,884=>302,885=>302,886=>837,887=>701,890=>500,891=>593,892=>550,893=>549,894=>400,900=>441,901=>500,902=>797,903=>380,904=>846,905=>1009,906=>563,908=>891,910=>980,911=>894,912=>390,913=>774,914=>762,915=>637,916=>774,917=>683,918=>725,919=>837,920=>850,921=>372,922=>775,923=>774,924=>995,925=>837,926=>632,927=>850,928=>837,929=>733,931=>683,932=>682,933=>724,934=>850,935=>771,936=>850,937=>850,938=>372,939=>724,940=>687,941=>557,942=>712,943=>390,944=>675,945=>687,946=>716,947=>681,948=>687,949=>557,950=>591,951=>712,952=>687,953=>390,954=>710,955=>633,956=>736,957=>681,958=>591,959=>687,960=>791,961=>716,962=>593,963=>779,964=>638,965=>675,966=>782,967=>645,968=>794,969=>869,970=>390,971=>675,972=>687,973=>675,974=>869,975=>775,976=>651,977=>661,978=>746,979=>981,980=>746,981=>796,982=>869,983=>744,984=>850,985=>687,986=>734,987=>593,988=>683,989=>494,990=>702,991=>660,992=>919,993=>627,994=>1093,995=>837,996=>832,997=>716,998=>928,999=>744,1000=>733,1001=>650,1002=>789,1003=>671,1004=>752,1005=>716,1006=>682,1007=>590,1008=>744,1009=>716,1010=>593,1011=>343,1012=>850,1013=>645,1014=>644,1015=>738,1016=>716,1017=>734,1018=>995,1019=>732,1020=>716,1021=>698,1022=>734,1023=>698,1024=>683,1025=>683,1026=>878,1027=>637,1028=>734,1029=>720,1030=>372,1031=>372,1032=>372,1033=>1154,1034=>1130,1035=>878,1036=>817,1037=>837,1038=>771,1039=>837,1040=>774,1041=>762,1042=>762,1043=>637,1044=>891,1045=>683,1046=>1224,1047=>710,1048=>837,1049=>837,1050=>817,1051=>831,1052=>995,1053=>837,1054=>850,1055=>837,1056=>733,1057=>734,1058=>682,1059=>771,1060=>992,1061=>771,1062=>928,1063=>808,1064=>1235,1065=>1326,1066=>939,1067=>1036,1068=>762,1069=>734,1070=>1174,1071=>770,1072=>675,1073=>698,1074=>633,1075=>522,1076=>808,1077=>678,1078=>995,1079=>581,1080=>701,1081=>701,1082=>679,1083=>732,1084=>817,1085=>691,1086=>687,1087=>691,1088=>716,1089=>593,1090=>580,1091=>652,1092=>992,1093=>645,1094=>741,1095=>687,1096=>1062,1097=>1105,1098=>751,1099=>904,1100=>632,1101=>593,1102=>972,1103=>642,1104=>678,1105=>678,1106=>714,1107=>522,1108=>593,1109=>595,1110=>343,1111=>343,1112=>343,1113=>991,1114=>956,1115=>734,1116=>679,1117=>701,1118=>652,1119=>691,1120=>1093,1121=>869,1122=>840,1123=>736,1124=>1012,1125=>839,1126=>992,1127=>832,1128=>1358,1129=>1121,1130=>850,1131=>687,1132=>1236,1133=>1007,1134=>696,1135=>557,1136=>1075,1137=>1061,1138=>850,1139=>687,1140=>850,1141=>695,1142=>850,1143=>695,1144=>1148,1145=>1043,1146=>1074,1147=>863,1148=>1405,1149=>1173,1150=>1093,1151=>869,1152=>734,1153=>593,1154=>652,1155=>0,1156=>0,1157=>0,1158=>0,1159=>0,1160=>418,1161=>418,1162=>957,1163=>807,1164=>762,1165=>611,1166=>733,1167=>716,1168=>637,1169=>522,1170=>666,1171=>543,1172=>808,1173=>669,1174=>1224,1175=>995,1176=>710,1177=>581,1178=>775,1179=>679,1180=>817,1181=>679,1182=>817,1183=>679,1184=>1015,1185=>826,1186=>956,1187=>808,1188=>1103,1189=>874,1190=>1273,1191=>1017,1192=>952,1193=>858,1194=>734,1195=>593,1196=>682,1197=>580,1198=>724,1199=>652,1200=>724,1201=>652,1202=>771,1203=>645,1204=>1112,1205=>1000,1206=>808,1207=>687,1208=>808,1209=>687,1210=>808,1211=>712,1212=>1026,1213=>810,1214=>1026,1215=>810,1216=>372,1217=>1224,1218=>995,1219=>775,1220=>630,1221=>951,1222=>805,1223=>837,1224=>691,1225=>957,1226=>807,1227=>808,1228=>687,1229=>1115,1230=>933,1231=>343,1232=>774,1233=>675,1234=>774,1235=>675,1236=>1085,1237=>1048,1238=>683,1239=>678,1240=>849,1241=>678,1242=>849,1243=>678,1244=>1224,1245=>995,1246=>710,1247=>581,1248=>772,1249=>641,1250=>837,1251=>701,1252=>837,1253=>701,1254=>850,1255=>687,1256=>850,1257=>687,1258=>850,1259=>687,1260=>734,1261=>593,1262=>771,1263=>652,1264=>771,1265=>652,1266=>771,1267=>652,1268=>808,1269=>687,1270=>637,1271=>522,1272=>1036,1273=>904,1274=>666,1275=>543,1276=>771,1277=>645,1278=>771,1279=>645,1280=>762,1281=>608,1282=>1159,1283=>893,1284=>1119,1285=>920,1286=>828,1287=>693,1288=>1242,1289=>1017,1290=>1289,1291=>1013,1292=>839,1293=>638,1294=>938,1295=>803,1296=>696,1297=>557,1298=>831,1299=>732,1300=>1286,1301=>1068,1302=>1065,1303=>979,1304=>1082,1305=>1013,1306=>850,1307=>716,1308=>1103,1309=>924,1310=>817,1311=>679,1312=>1267,1313=>1059,1314=>1273,1315=>1017,1316=>957,1317=>807,1329=>813,1330=>729,1331=>728,1332=>731,1333=>729,1334=>733,1335=>652,1336=>720,1337=>903,1338=>728,1339=>666,1340=>558,1341=>961,1342=>788,1343=>713,1344=>651,1345=>730,1346=>715,1347=>704,1348=>780,1349=>689,1350=>715,1351=>708,1352=>731,1353=>677,1354=>867,1355=>711,1356=>780,1357=>731,1358=>715,1359=>693,1360=>666,1361=>698,1362=>576,1363=>833,1364=>698,1365=>763,1366=>855,1369=>330,1370=>342,1371=>308,1372=>374,1373=>313,1374=>461,1375=>468,1377=>938,1378=>642,1379=>704,1380=>708,1381=>642,1382=>644,1383=>565,1384=>642,1385=>756,1386=>704,1387=>643,1388=>310,1389=>984,1390=>638,1391=>643,1392=>643,1393=>603,1394=>643,1395=>642,1396=>643,1397=>309,1398=>643,1399=>486,1400=>643,1401=>366,1402=>938,1403=>573,1404=>666,1405=>643,1406=>643,1407=>934,1408=>643,1409=>643,1410=>479,1411=>934,1412=>648,1413=>620,1414=>813,1415=>812,1417=>360,1418=>374,1456=>0,1457=>0,1458=>0,1459=>0,1460=>0,1461=>0,1462=>0,1463=>0,1464=>0,1465=>0,1466=>0,1467=>0,1468=>0,1469=>0,1470=>415,1471=>0,1472=>372,1473=>0,1474=>0,1475=>372,1478=>497,1479=>0,1488=>728,1489=>610,1490=>447,1491=>588,1492=>687,1493=>343,1494=>400,1495=>687,1496=>679,1497=>294,1498=>578,1499=>566,1500=>605,1501=>696,1502=>724,1503=>343,1504=>453,1505=>680,1506=>666,1507=>675,1508=>658,1509=>661,1510=>653,1511=>736,1512=>602,1513=>758,1514=>683,1520=>664,1521=>567,1522=>519,1523=>444,1524=>710,1542=>667,1543=>667,1545=>884,1546=>1157,1548=>380,1557=>0,1563=>400,1567=>580,1569=>511,1570=>343,1571=>343,1572=>622,1573=>343,1574=>917,1575=>343,1576=>1005,1577=>590,1578=>1005,1579=>1005,1580=>721,1581=>721,1582=>721,1583=>513,1584=>513,1585=>576,1586=>576,1587=>1380,1588=>1380,1589=>1345,1590=>1345,1591=>1039,1592=>1039,1593=>683,1594=>683,1600=>342,1601=>1162,1602=>894,1603=>917,1604=>868,1605=>733,1606=>854,1607=>590,1608=>622,1609=>917,1610=>917,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1619=>0,1620=>0,1621=>0,1623=>0,1626=>500,1632=>610,1633=>610,1634=>610,1635=>610,1636=>610,1637=>610,1638=>610,1639=>610,1640=>610,1641=>610,1642=>610,1643=>374,1644=>380,1645=>545,1646=>1005,1647=>894,1648=>0,1652=>292,1657=>1005,1658=>1005,1659=>1005,1660=>1005,1661=>1005,1662=>1005,1663=>1005,1664=>1005,1665=>721,1666=>721,1667=>721,1668=>721,1669=>721,1670=>721,1671=>721,1672=>445,1673=>445,1674=>445,1675=>445,1676=>445,1677=>445,1678=>445,1679=>445,1680=>445,1681=>576,1682=>576,1683=>576,1684=>576,1685=>681,1686=>576,1687=>576,1688=>576,1689=>576,1690=>1380,1691=>1380,1692=>1380,1693=>1345,1694=>1345,1695=>1039,1696=>683,1697=>1162,1698=>1162,1699=>1162,1700=>1162,1701=>1162,1702=>1162,1703=>894,1704=>894,1705=>1024,1706=>1271,1707=>1024,1708=>917,1709=>917,1710=>917,1711=>1024,1712=>1024,1713=>1024,1714=>1024,1715=>1024,1716=>1024,1717=>868,1718=>868,1719=>868,1720=>868,1721=>854,1722=>854,1723=>854,1724=>854,1725=>854,1726=>938,1727=>721,1734=>622,1740=>917,1742=>917,1749=>590,1776=>610,1777=>610,1778=>610,1779=>610,1780=>610,1781=>610,1782=>610,1783=>610,1784=>610,1785=>610,1984=>696,1985=>696,1986=>696,1987=>696,1988=>696,1989=>696,1990=>696,1991=>696,1992=>696,1993=>696,1994=>343,1995=>547,1996=>543,1997=>652,1998=>691,1999=>691,2000=>594,2001=>691,2002=>904,2003=>551,2004=>551,2005=>627,2006=>688,2007=>444,2008=>1022,2009=>506,2010=>826,2011=>691,2012=>652,2013=>912,2014=>627,2015=>707,2016=>506,2017=>652,2018=>574,2019=>627,2020=>627,2021=>627,2022=>574,2023=>574,2027=>0,2028=>0,2029=>0,2030=>0,2031=>0,2032=>0,2033=>0,2034=>0,2035=>0,2036=>380,2037=>380,2040=>691,2041=>691,2042=>415,3647=>696,3713=>790,3714=>748,3716=>749,3719=>569,3720=>742,3722=>744,3725=>761,3732=>706,3733=>704,3734=>747,3735=>819,3737=>730,3738=>727,3739=>727,3740=>922,3741=>827,3742=>866,3743=>866,3745=>836,3746=>761,3747=>770,3749=>769,3751=>713,3754=>827,3755=>1031,3757=>724,3758=>784,3759=>934,3760=>688,3761=>0,3762=>610,3763=>610,3764=>0,3765=>0,3766=>0,3767=>0,3768=>0,3769=>0,3771=>0,3772=>0,3773=>670,3776=>516,3777=>860,3778=>516,3779=>650,3780=>632,3782=>759,3784=>0,3785=>0,3786=>0,3787=>0,3788=>0,3789=>0,3792=>771,3793=>771,3794=>693,3795=>836,3796=>729,3797=>729,3798=>849,3799=>790,3800=>759,3801=>910,3804=>1363,3805=>1363,4256=>874,4257=>733,4258=>679,4259=>834,4260=>615,4261=>768,4262=>753,4263=>914,4264=>453,4265=>620,4266=>843,4267=>882,4268=>625,4269=>854,4270=>781,4271=>629,4272=>912,4273=>621,4274=>620,4275=>854,4276=>866,4277=>724,4278=>630,4279=>621,4280=>625,4281=>620,4282=>818,4283=>874,4284=>615,4285=>623,4286=>625,4287=>725,4288=>844,4289=>596,4290=>688,4291=>596,4292=>594,4293=>738,4304=>554,4305=>563,4306=>622,4307=>834,4308=>555,4309=>564,4310=>551,4311=>828,4312=>563,4313=>556,4314=>1074,4315=>568,4316=>568,4317=>814,4318=>554,4319=>563,4320=>823,4321=>568,4322=>700,4323=>591,4324=>852,4325=>560,4326=>814,4327=>563,4328=>553,4329=>568,4330=>622,4331=>568,4332=>553,4333=>566,4334=>568,4335=>540,4336=>554,4337=>559,4338=>553,4339=>554,4340=>553,4341=>587,4342=>853,4343=>604,4344=>563,4345=>622,4346=>554,4347=>448,4348=>324,5121=>774,5122=>774,5123=>774,5124=>774,5125=>905,5126=>905,5127=>905,5129=>905,5130=>905,5131=>905,5132=>1018,5133=>1009,5134=>1018,5135=>1009,5136=>1018,5137=>1009,5138=>1149,5139=>1140,5140=>1149,5141=>1140,5142=>905,5143=>1149,5144=>1142,5145=>1149,5146=>1142,5147=>905,5149=>310,5150=>529,5151=>425,5152=>425,5153=>395,5154=>395,5155=>395,5156=>395,5157=>564,5158=>470,5159=>310,5160=>395,5161=>395,5162=>395,5163=>1213,5164=>986,5165=>1216,5166=>1297,5167=>774,5168=>774,5169=>774,5170=>774,5171=>886,5172=>886,5173=>886,5175=>886,5176=>886,5177=>886,5178=>1018,5179=>1009,5180=>1018,5181=>1009,5182=>1018,5183=>1009,5184=>1149,5185=>1140,5186=>1149,5187=>1140,5188=>1149,5189=>1142,5190=>1149,5191=>1142,5192=>886,5193=>576,5194=>229,5196=>812,5197=>812,5198=>812,5199=>812,5200=>815,5201=>815,5202=>815,5204=>815,5205=>815,5206=>815,5207=>1056,5208=>1048,5209=>1056,5210=>1048,5211=>1056,5212=>1048,5213=>1060,5214=>1054,5215=>1060,5216=>1054,5217=>1060,5218=>1052,5219=>1060,5220=>1052,5221=>1060,5222=>483,5223=>1005,5224=>1005,5225=>1023,5226=>1017,5227=>743,5228=>743,5229=>743,5230=>743,5231=>743,5232=>743,5233=>743,5234=>743,5235=>743,5236=>1029,5237=>975,5238=>980,5239=>975,5240=>980,5241=>975,5242=>1029,5243=>975,5244=>1029,5245=>975,5246=>980,5247=>975,5248=>980,5249=>975,5250=>980,5251=>501,5252=>501,5253=>938,5254=>938,5255=>938,5256=>938,5257=>743,5258=>743,5259=>743,5260=>743,5261=>743,5262=>743,5263=>743,5264=>743,5265=>743,5266=>1029,5267=>975,5268=>1029,5269=>975,5270=>1029,5271=>975,5272=>1029,5273=>975,5274=>1029,5275=>975,5276=>1029,5277=>975,5278=>1029,5279=>975,5280=>1029,5281=>501,5282=>501,5283=>626,5284=>626,5285=>626,5286=>626,5287=>626,5288=>626,5289=>626,5290=>626,5291=>626,5292=>881,5293=>854,5294=>863,5295=>874,5296=>863,5297=>874,5298=>881,5299=>874,5300=>881,5301=>874,5302=>863,5303=>874,5304=>863,5305=>874,5306=>863,5307=>436,5308=>548,5309=>436,5312=>988,5313=>988,5314=>988,5315=>988,5316=>931,5317=>931,5318=>931,5319=>931,5320=>931,5321=>1238,5322=>1247,5323=>1200,5324=>1228,5325=>1200,5326=>1228,5327=>931,5328=>660,5329=>497,5330=>660,5331=>988,5332=>988,5333=>988,5334=>988,5335=>931,5336=>931,5337=>931,5338=>931,5339=>931,5340=>1231,5341=>1247,5342=>1283,5343=>1228,5344=>1283,5345=>1228,5346=>1228,5347=>1214,5348=>1228,5349=>1214,5350=>1283,5351=>1228,5352=>1283,5353=>1228,5354=>660,5356=>886,5357=>730,5358=>730,5359=>730,5360=>730,5361=>730,5362=>730,5363=>730,5364=>730,5365=>730,5366=>998,5367=>958,5368=>967,5369=>989,5370=>967,5371=>989,5372=>998,5373=>958,5374=>998,5375=>958,5376=>967,5377=>989,5378=>967,5379=>989,5380=>967,5381=>493,5382=>460,5383=>493,5392=>923,5393=>923,5394=>923,5395=>1136,5396=>1136,5397=>1136,5398=>1136,5399=>1209,5400=>1202,5401=>1209,5402=>1202,5403=>1209,5404=>1202,5405=>1431,5406=>1420,5407=>1431,5408=>1420,5409=>1431,5410=>1420,5411=>1431,5412=>1420,5413=>746,5414=>776,5415=>776,5416=>776,5417=>776,5418=>776,5419=>776,5420=>776,5421=>776,5422=>776,5423=>1003,5424=>1003,5425=>1013,5426=>996,5427=>1013,5428=>996,5429=>1003,5430=>1003,5431=>1003,5432=>1003,5433=>1013,5434=>996,5435=>1013,5436=>996,5437=>1013,5438=>495,5440=>395,5441=>510,5442=>1033,5443=>1033,5444=>976,5445=>976,5446=>976,5447=>976,5448=>733,5449=>733,5450=>733,5451=>733,5452=>733,5453=>733,5454=>1003,5455=>959,5456=>495,5458=>886,5459=>774,5460=>774,5461=>774,5462=>774,5463=>928,5464=>928,5465=>928,5466=>928,5467=>1172,5468=>1142,5469=>602,5470=>812,5471=>812,5472=>812,5473=>812,5474=>812,5475=>812,5476=>815,5477=>815,5478=>815,5479=>815,5480=>1060,5481=>1052,5482=>548,5492=>977,5493=>977,5494=>977,5495=>977,5496=>977,5497=>977,5498=>977,5499=>618,5500=>837,5501=>510,5502=>1238,5503=>1238,5504=>1238,5505=>1238,5506=>1238,5507=>1238,5508=>1238,5509=>989,5514=>977,5515=>977,5516=>977,5517=>977,5518=>1591,5519=>1591,5520=>1591,5521=>1295,5522=>1295,5523=>1591,5524=>1591,5525=>848,5526=>1273,5536=>988,5537=>988,5538=>931,5539=>931,5540=>931,5541=>931,5542=>660,5543=>776,5544=>776,5545=>776,5546=>776,5547=>776,5548=>776,5549=>776,5550=>495,5551=>743,5598=>830,5601=>830,5702=>496,5703=>496,5742=>413,5743=>1238,5744=>1591,5745=>2016,5746=>2016,5747=>1720,5748=>1678,5749=>2016,5750=>2016,5760=>543,5761=>637,5762=>945,5763=>1254,5764=>1563,5765=>1871,5766=>627,5767=>936,5768=>1254,5769=>1559,5770=>1871,5771=>569,5772=>877,5773=>1187,5774=>1497,5775=>1807,5776=>637,5777=>945,5778=>1240,5779=>1555,5780=>1871,5781=>569,5782=>569,5783=>789,5784=>1234,5785=>1559,5786=>740,5787=>638,5788=>638,7424=>652,7425=>833,7426=>1048,7427=>608,7428=>593,7429=>676,7430=>676,7431=>559,7432=>557,7433=>343,7434=>494,7435=>665,7436=>539,7437=>817,7438=>701,7439=>687,7440=>593,7441=>660,7442=>660,7443=>660,7444=>1094,7446=>687,7447=>687,7448=>556,7449=>642,7450=>642,7451=>580,7452=>634,7453=>737,7454=>948,7455=>695,7456=>652,7457=>924,7458=>582,7459=>646,7462=>539,7463=>652,7464=>691,7465=>556,7466=>781,7467=>732,7468=>487,7469=>683,7470=>480,7472=>523,7473=>430,7474=>430,7475=>517,7476=>527,7477=>234,7478=>234,7479=>488,7480=>401,7481=>626,7482=>527,7483=>527,7484=>535,7485=>509,7486=>461,7487=>485,7488=>430,7489=>511,7490=>695,7491=>458,7492=>458,7493=>479,7494=>712,7495=>479,7496=>479,7497=>479,7498=>479,7499=>386,7500=>386,7501=>479,7502=>219,7503=>487,7504=>664,7505=>456,7506=>488,7507=>414,7508=>488,7509=>488,7510=>479,7511=>388,7512=>456,7513=>462,7514=>664,7515=>501,7517=>451,7518=>429,7519=>433,7520=>493,7521=>406,7522=>219,7523=>315,7524=>456,7525=>501,7526=>451,7527=>429,7528=>451,7529=>493,7530=>406,7543=>716,7544=>527,7547=>545,7549=>747,7557=>514,7579=>479,7580=>414,7581=>414,7582=>488,7583=>386,7584=>377,7585=>348,7586=>479,7587=>456,7588=>347,7589=>281,7590=>347,7591=>347,7592=>431,7593=>326,7594=>330,7595=>370,7596=>664,7597=>664,7598=>562,7599=>562,7600=>448,7601=>488,7602=>542,7603=>422,7604=>396,7605=>388,7606=>583,7607=>494,7608=>399,7609=>451,7610=>501,7611=>417,7612=>523,7613=>470,7614=>455,7615=>425,7620=>0,7621=>0,7622=>0,7623=>0,7624=>0,7625=>0,7680=>774,7681=>675,7682=>762,7683=>716,7684=>762,7685=>716,7686=>762,7687=>716,7688=>734,7689=>593,7690=>830,7691=>716,7692=>830,7693=>716,7694=>830,7695=>716,7696=>830,7697=>716,7698=>830,7699=>716,7700=>683,7701=>678,7702=>683,7703=>678,7704=>683,7705=>678,7706=>683,7707=>678,7708=>683,7709=>678,7710=>683,7711=>435,7712=>821,7713=>716,7714=>837,7715=>712,7716=>837,7717=>712,7718=>837,7719=>712,7720=>837,7721=>712,7722=>837,7723=>712,7724=>372,7725=>343,7726=>372,7727=>343,7728=>775,7729=>665,7730=>775,7731=>665,7732=>775,7733=>665,7734=>637,7735=>343,7736=>637,7737=>343,7738=>637,7739=>343,7740=>637,7741=>343,7742=>995,7743=>1042,7744=>995,7745=>1042,7746=>995,7747=>1042,7748=>837,7749=>712,7750=>837,7751=>712,7752=>837,7753=>712,7754=>837,7755=>712,7756=>850,7757=>687,7758=>850,7759=>687,7760=>850,7761=>687,7762=>850,7763=>687,7764=>733,7765=>716,7766=>733,7767=>716,7768=>770,7769=>493,7770=>770,7771=>493,7772=>770,7773=>493,7774=>770,7775=>493,7776=>720,7777=>595,7778=>720,7779=>595,7780=>720,7781=>595,7782=>720,7783=>595,7784=>720,7785=>595,7786=>682,7787=>478,7788=>682,7789=>478,7790=>682,7791=>478,7792=>682,7793=>478,7794=>812,7795=>712,7796=>812,7797=>712,7798=>812,7799=>712,7800=>812,7801=>712,7802=>812,7803=>712,7804=>774,7805=>652,7806=>774,7807=>652,7808=>1103,7809=>924,7810=>1103,7811=>924,7812=>1103,7813=>924,7814=>1103,7815=>924,7816=>1103,7817=>924,7818=>771,7819=>645,7820=>771,7821=>645,7822=>724,7823=>652,7824=>725,7825=>582,7826=>725,7827=>582,7828=>725,7829=>582,7830=>712,7831=>478,7832=>924,7833=>652,7834=>675,7835=>435,7836=>435,7837=>435,7838=>896,7839=>687,7840=>774,7841=>675,7842=>774,7843=>675,7844=>774,7845=>675,7846=>774,7847=>675,7848=>774,7849=>675,7850=>774,7851=>675,7852=>774,7853=>675,7854=>774,7855=>675,7856=>774,7857=>675,7858=>774,7859=>675,7860=>774,7861=>675,7862=>774,7863=>675,7864=>683,7865=>678,7866=>683,7867=>678,7868=>683,7869=>678,7870=>683,7871=>678,7872=>683,7873=>678,7874=>683,7875=>678,7876=>683,7877=>678,7878=>683,7879=>678,7880=>372,7881=>343,7882=>372,7883=>343,7884=>850,7885=>687,7886=>850,7887=>687,7888=>850,7889=>687,7890=>850,7891=>687,7892=>850,7893=>687,7894=>850,7895=>687,7896=>850,7897=>687,7898=>874,7899=>687,7900=>874,7901=>687,7902=>874,7903=>687,7904=>874,7905=>687,7906=>874,7907=>687,7908=>812,7909=>712,7910=>812,7911=>712,7912=>835,7913=>712,7914=>835,7915=>712,7916=>835,7917=>712,7918=>835,7919=>712,7920=>835,7921=>712,7922=>724,7923=>652,7924=>724,7925=>652,7926=>724,7927=>652,7928=>724,7929=>652,7930=>953,7931=>644,7936=>687,7937=>687,7938=>687,7939=>687,7940=>687,7941=>687,7942=>687,7943=>687,7944=>774,7945=>774,7946=>1041,7947=>1043,7948=>935,7949=>963,7950=>835,7951=>859,7952=>557,7953=>557,7954=>557,7955=>557,7956=>557,7957=>557,7960=>792,7961=>794,7962=>1100,7963=>1096,7964=>1023,7965=>1052,7968=>712,7969=>712,7970=>712,7971=>712,7972=>712,7973=>712,7974=>712,7975=>712,7976=>945,7977=>951,7978=>1250,7979=>1250,7980=>1180,7981=>1206,7982=>1054,7983=>1063,7984=>390,7985=>390,7986=>390,7987=>390,7988=>390,7989=>390,7990=>390,7991=>390,7992=>483,7993=>489,7994=>777,7995=>785,7996=>712,7997=>738,7998=>604,7999=>604,8000=>687,8001=>687,8002=>687,8003=>687,8004=>687,8005=>687,8008=>892,8009=>933,8010=>1221,8011=>1224,8012=>1053,8013=>1082,8016=>675,8017=>675,8018=>675,8019=>675,8020=>675,8021=>675,8022=>675,8023=>675,8025=>930,8027=>1184,8029=>1199,8031=>1049,8032=>869,8033=>869,8034=>869,8035=>869,8036=>869,8037=>869,8038=>869,8039=>869,8040=>909,8041=>958,8042=>1246,8043=>1251,8044=>1076,8045=>1105,8046=>1028,8047=>1076,8048=>687,8049=>687,8050=>557,8051=>557,8052=>712,8053=>712,8054=>390,8055=>390,8056=>687,8057=>687,8058=>675,8059=>675,8060=>869,8061=>869,8064=>687,8065=>687,8066=>687,8067=>687,8068=>687,8069=>687,8070=>687,8071=>687,8072=>774,8073=>774,8074=>1041,8075=>1043,8076=>935,8077=>963,8078=>835,8079=>859,8080=>712,8081=>712,8082=>712,8083=>712,8084=>712,8085=>712,8086=>712,8087=>712,8088=>945,8089=>951,8090=>1250,8091=>1250,8092=>1180,8093=>1206,8094=>1054,8095=>1063,8096=>869,8097=>869,8098=>869,8099=>869,8100=>869,8101=>869,8102=>869,8103=>869,8104=>909,8105=>958,8106=>1246,8107=>1251,8108=>1076,8109=>1105,8110=>1028,8111=>1076,8112=>687,8113=>687,8114=>687,8115=>687,8116=>687,8118=>687,8119=>687,8120=>774,8121=>774,8122=>876,8123=>797,8124=>774,8125=>500,8126=>500,8127=>500,8128=>500,8129=>500,8130=>712,8131=>712,8132=>712,8134=>712,8135=>712,8136=>929,8137=>846,8138=>1080,8139=>1009,8140=>837,8141=>500,8142=>500,8143=>500,8144=>390,8145=>390,8146=>390,8147=>390,8150=>390,8151=>390,8152=>372,8153=>372,8154=>621,8155=>563,8157=>500,8158=>500,8159=>500,8160=>675,8161=>675,8162=>675,8163=>675,8164=>716,8165=>716,8166=>675,8167=>675,8168=>724,8169=>724,8170=>1020,8171=>980,8172=>838,8173=>500,8174=>500,8175=>500,8178=>869,8179=>869,8180=>869,8182=>869,8183=>869,8184=>1065,8185=>891,8186=>1084,8187=>894,8188=>850,8189=>500,8190=>500,8192=>500,8193=>1000,8194=>500,8195=>1000,8196=>330,8197=>250,8198=>167,8199=>696,8200=>380,8201=>200,8202=>100,8203=>0,8204=>0,8205=>0,8206=>0,8207=>0,8208=>415,8209=>415,8210=>696,8211=>500,8212=>1000,8213=>1000,8214=>500,8215=>500,8216=>380,8217=>380,8218=>380,8219=>380,8220=>657,8221=>657,8222=>657,8223=>657,8224=>500,8225=>500,8226=>639,8227=>639,8228=>333,8229=>667,8230=>1000,8231=>348,8232=>0,8233=>0,8234=>0,8235=>0,8236=>0,8237=>0,8238=>0,8239=>200,8240=>1440,8241=>1887,8242=>264,8243=>447,8244=>630,8245=>264,8246=>447,8247=>630,8248=>733,8249=>412,8250=>412,8251=>972,8252=>627,8253=>580,8254=>500,8255=>828,8256=>828,8257=>329,8258=>1023,8259=>500,8260=>167,8261=>457,8262=>457,8263=>1030,8264=>829,8265=>829,8266=>513,8267=>636,8268=>500,8269=>500,8270=>523,8271=>400,8272=>828,8273=>523,8274=>556,8275=>1000,8276=>828,8277=>838,8278=>684,8279=>813,8280=>838,8281=>838,8282=>380,8283=>872,8284=>838,8285=>380,8286=>380,8287=>222,8288=>0,8289=>0,8290=>0,8291=>0,8292=>0,8298=>0,8299=>0,8300=>0,8301=>0,8302=>0,8303=>0,8304=>438,8305=>219,8308=>438,8309=>438,8310=>438,8311=>438,8312=>438,8313=>438,8314=>528,8315=>528,8316=>528,8317=>288,8318=>288,8319=>456,8320=>438,8321=>438,8322=>438,8323=>438,8324=>438,8325=>438,8326=>438,8327=>438,8328=>438,8329=>438,8330=>528,8331=>528,8332=>528,8333=>288,8334=>288,8336=>458,8337=>479,8338=>488,8339=>413,8340=>479,8341=>456,8342=>487,8343=>219,8344=>664,8345=>456,8346=>479,8347=>381,8348=>388,8352=>929,8353=>696,8354=>696,8355=>696,8356=>696,8357=>1042,8358=>837,8359=>1518,8360=>1205,8361=>1103,8362=>904,8363=>696,8364=>696,8365=>696,8366=>696,8367=>1392,8368=>696,8369=>696,8370=>696,8371=>696,8372=>859,8373=>696,8376=>696,8377=>696,8378=>769,8400=>0,8401=>0,8406=>0,8407=>0,8411=>0,8412=>0,8417=>0,8448=>1120,8449=>1170,8450=>734,8451=>1211,8452=>896,8453=>1091,8454=>1144,8455=>614,8456=>698,8457=>1086,8459=>1073,8460=>913,8461=>888,8462=>712,8463=>712,8464=>597,8465=>697,8466=>856,8467=>472,8468=>974,8469=>837,8470=>1203,8471=>1000,8472=>697,8473=>750,8474=>850,8475=>938,8476=>814,8477=>801,8478=>896,8479=>710,8480=>1020,8481=>1281,8482=>1000,8483=>755,8484=>754,8485=>578,8486=>850,8487=>850,8488=>763,8489=>338,8490=>775,8491=>774,8492=>928,8493=>818,8494=>854,8495=>636,8496=>729,8497=>808,8498=>683,8499=>1184,8500=>465,8501=>794,8502=>731,8503=>494,8504=>684,8505=>380,8506=>945,8507=>1348,8508=>790,8509=>737,8510=>654,8511=>863,8512=>840,8513=>775,8514=>557,8515=>637,8516=>760,8517=>830,8518=>716,8519=>678,8520=>343,8521=>343,8523=>872,8526=>547,8528=>1035,8529=>1035,8530=>1483,8531=>1035,8532=>1035,8533=>1035,8534=>1035,8535=>1035,8536=>1035,8537=>1035,8538=>1035,8539=>1035,8540=>1035,8541=>1035,8542=>1035,8543=>615,8544=>372,8545=>659,8546=>945,8547=>1099,8548=>774,8549=>1099,8550=>1386,8551=>1672,8552=>1121,8553=>771,8554=>1120,8555=>1407,8556=>637,8557=>734,8558=>830,8559=>995,8560=>343,8561=>607,8562=>872,8563=>984,8564=>652,8565=>962,8566=>1227,8567=>1491,8568=>969,8569=>645,8570=>969,8571=>1233,8572=>343,8573=>593,8574=>716,8575=>1042,8576=>1289,8577=>830,8578=>1289,8579=>734,8580=>593,8581=>734,8585=>1035,8592=>838,8593=>838,8594=>838,8595=>838,8596=>838,8597=>838,8598=>838,8599=>838,8600=>838,8601=>838,8602=>838,8603=>838,8604=>838,8605=>838,8606=>838,8607=>838,8608=>838,8609=>838,8610=>838,8611=>838,8612=>838,8613=>838,8614=>838,8615=>838,8616=>838,8617=>838,8618=>838,8619=>838,8620=>838,8621=>838,8622=>838,8623=>838,8624=>838,8625=>838,8626=>838,8627=>838,8628=>838,8629=>838,8630=>838,8631=>838,8632=>838,8633=>838,8634=>838,8635=>838,8636=>838,8637=>838,8638=>838,8639=>838,8640=>838,8641=>838,8642=>838,8643=>838,8644=>838,8645=>838,8646=>838,8647=>838,8648=>838,8649=>838,8650=>838,8651=>838,8652=>838,8653=>838,8654=>838,8655=>838,8656=>838,8657=>838,8658=>838,8659=>838,8660=>838,8661=>838,8662=>838,8663=>838,8664=>838,8665=>838,8666=>838,8667=>838,8668=>838,8669=>838,8670=>838,8671=>838,8672=>838,8673=>838,8674=>838,8675=>838,8676=>838,8677=>838,8678=>838,8679=>838,8680=>838,8681=>838,8682=>838,8683=>838,8684=>838,8685=>838,8686=>838,8687=>838,8688=>838,8689=>838,8690=>838,8691=>838,8692=>838,8693=>838,8694=>838,8695=>838,8696=>838,8697=>838,8698=>838,8699=>838,8700=>838,8701=>838,8702=>838,8703=>838,8704=>774,8705=>696,8706=>544,8707=>683,8708=>683,8709=>856,8710=>697,8711=>697,8712=>896,8713=>896,8714=>750,8715=>896,8716=>896,8717=>750,8718=>636,8719=>787,8720=>787,8721=>718,8722=>838,8723=>838,8724=>696,8725=>365,8726=>696,8727=>838,8728=>626,8729=>380,8730=>667,8731=>667,8732=>667,8733=>712,8734=>833,8735=>838,8736=>896,8737=>896,8738=>838,8739=>500,8740=>500,8741=>500,8742=>500,8743=>812,8744=>812,8745=>812,8746=>812,8747=>610,8748=>929,8749=>1295,8750=>563,8751=>977,8752=>1313,8753=>563,8754=>563,8755=>563,8756=>696,8757=>696,8758=>294,8759=>696,8760=>838,8761=>838,8762=>838,8763=>838,8764=>838,8765=>838,8766=>838,8767=>838,8768=>375,8769=>838,8770=>838,8771=>838,8772=>838,8773=>838,8774=>838,8775=>838,8776=>838,8777=>838,8778=>838,8779=>838,8780=>838,8781=>838,8782=>838,8783=>838,8784=>838,8785=>838,8786=>838,8787=>838,8788=>1063,8789=>1063,8790=>838,8791=>838,8792=>838,8793=>838,8794=>838,8795=>838,8796=>838,8797=>838,8798=>838,8799=>838,8800=>838,8801=>838,8802=>838,8803=>838,8804=>838,8805=>838,8806=>838,8807=>838,8808=>841,8809=>841,8810=>1047,8811=>1047,8812=>500,8813=>838,8814=>838,8815=>838,8816=>838,8817=>838,8818=>838,8819=>838,8820=>838,8821=>838,8822=>838,8823=>838,8824=>838,8825=>838,8826=>838,8827=>838,8828=>838,8829=>838,8830=>838,8831=>838,8832=>838,8833=>838,8834=>838,8835=>838,8836=>838,8837=>838,8838=>838,8839=>838,8840=>838,8841=>838,8842=>838,8843=>838,8844=>812,8845=>812,8846=>812,8847=>838,8848=>838,8849=>838,8850=>838,8851=>796,8852=>796,8853=>838,8854=>838,8855=>838,8856=>838,8857=>838,8858=>838,8859=>838,8860=>838,8861=>838,8862=>838,8863=>838,8864=>838,8865=>838,8866=>914,8867=>914,8868=>914,8869=>914,8870=>542,8871=>542,8872=>914,8873=>914,8874=>914,8875=>914,8876=>914,8877=>914,8878=>914,8879=>914,8880=>838,8881=>838,8882=>838,8883=>838,8884=>838,8885=>838,8886=>1000,8887=>1000,8888=>838,8889=>838,8890=>542,8891=>812,8892=>812,8893=>812,8894=>838,8895=>838,8896=>843,8897=>843,8898=>843,8899=>843,8900=>494,8901=>380,8902=>626,8903=>838,8904=>1000,8905=>1000,8906=>1000,8907=>1000,8908=>1000,8909=>838,8910=>812,8911=>812,8912=>838,8913=>838,8914=>838,8915=>838,8916=>838,8917=>838,8918=>838,8919=>838,8920=>1422,8921=>1422,8922=>838,8923=>838,8924=>838,8925=>838,8926=>838,8927=>838,8928=>838,8929=>838,8930=>838,8931=>838,8932=>838,8933=>838,8934=>838,8935=>838,8936=>838,8937=>838,8938=>838,8939=>838,8940=>838,8941=>838,8942=>1000,8943=>1000,8944=>1000,8945=>1000,8946=>1158,8947=>896,8948=>750,8949=>896,8950=>896,8951=>750,8952=>896,8953=>896,8954=>1158,8955=>896,8956=>750,8957=>896,8958=>750,8959=>896,8960=>602,8961=>602,8962=>716,8963=>838,8964=>838,8965=>838,8966=>838,8967=>488,8968=>457,8969=>457,8970=>457,8971=>457,8972=>809,8973=>809,8974=>809,8975=>809,8976=>838,8977=>539,8984=>928,8985=>838,8988=>469,8989=>469,8990=>469,8991=>469,8992=>610,8993=>610,8996=>1152,8997=>1152,8998=>1414,8999=>1152,9000=>1443,9003=>1414,9004=>873,9075=>390,9076=>716,9077=>869,9082=>687,9085=>863,9095=>1152,9108=>873,9115=>500,9116=>500,9117=>500,9118=>500,9119=>500,9120=>500,9121=>500,9122=>500,9123=>500,9124=>500,9125=>500,9126=>500,9127=>750,9128=>750,9129=>750,9130=>750,9131=>750,9132=>750,9133=>750,9134=>610,9166=>838,9167=>945,9187=>873,9189=>769,9192=>696,9250=>716,9251=>716,9312=>847,9313=>847,9314=>847,9315=>847,9316=>847,9317=>847,9318=>847,9319=>847,9320=>847,9321=>847,9600=>769,9601=>769,9602=>769,9603=>769,9604=>769,9605=>769,9606=>769,9607=>769,9608=>769,9609=>769,9610=>769,9611=>769,9612=>769,9613=>769,9614=>769,9615=>769,9616=>769,9617=>769,9618=>769,9619=>769,9620=>769,9621=>769,9622=>769,9623=>769,9624=>769,9625=>769,9626=>769,9627=>769,9628=>769,9629=>769,9630=>769,9631=>769,9632=>945,9633=>945,9634=>945,9635=>945,9636=>945,9637=>945,9638=>945,9639=>945,9640=>945,9641=>945,9642=>678,9643=>678,9644=>945,9645=>945,9646=>550,9647=>550,9648=>769,9649=>769,9650=>769,9651=>769,9652=>502,9653=>502,9654=>769,9655=>769,9656=>502,9657=>502,9658=>769,9659=>769,9660=>769,9661=>769,9662=>502,9663=>502,9664=>769,9665=>769,9666=>502,9667=>502,9668=>769,9669=>769,9670=>769,9671=>769,9672=>769,9673=>873,9674=>494,9675=>873,9676=>873,9677=>873,9678=>873,9679=>873,9680=>873,9681=>873,9682=>873,9683=>873,9684=>873,9685=>873,9686=>527,9687=>527,9688=>840,9689=>970,9690=>970,9691=>970,9692=>387,9693=>387,9694=>387,9695=>387,9696=>769,9697=>769,9698=>769,9699=>769,9700=>769,9701=>769,9702=>639,9703=>945,9704=>945,9705=>945,9706=>945,9707=>945,9708=>769,9709=>769,9710=>769,9711=>1119,9712=>945,9713=>945,9714=>945,9715=>945,9716=>873,9717=>873,9718=>873,9719=>873,9720=>769,9721=>769,9722=>769,9723=>830,9724=>830,9725=>732,9726=>732,9727=>769,9728=>896,9729=>1000,9730=>896,9731=>896,9732=>896,9733=>896,9734=>896,9735=>573,9736=>896,9737=>896,9738=>888,9739=>888,9740=>671,9741=>1013,9742=>1246,9743=>1250,9744=>896,9745=>896,9746=>896,9747=>532,9748=>896,9749=>896,9750=>896,9751=>896,9752=>896,9753=>896,9754=>896,9755=>896,9756=>896,9757=>609,9758=>896,9759=>609,9760=>896,9761=>896,9762=>896,9763=>896,9764=>669,9765=>746,9766=>649,9767=>784,9768=>545,9769=>896,9770=>896,9771=>896,9772=>710,9773=>896,9774=>896,9775=>896,9776=>896,9777=>896,9778=>896,9779=>896,9780=>896,9781=>896,9782=>896,9783=>896,9784=>896,9785=>1042,9786=>1042,9787=>1042,9788=>896,9789=>896,9790=>896,9791=>614,9792=>732,9793=>732,9794=>896,9795=>896,9796=>896,9797=>896,9798=>896,9799=>896,9800=>896,9801=>896,9802=>896,9803=>896,9804=>896,9805=>896,9806=>896,9807=>896,9808=>896,9809=>896,9810=>896,9811=>896,9812=>896,9813=>896,9814=>896,9815=>896,9816=>896,9817=>896,9818=>896,9819=>896,9820=>896,9821=>896,9822=>896,9823=>896,9824=>896,9825=>896,9826=>896,9827=>896,9828=>896,9829=>896,9830=>896,9831=>896,9832=>896,9833=>472,9834=>638,9835=>896,9836=>896,9837=>472,9838=>357,9839=>484,9840=>748,9841=>766,9842=>896,9843=>896,9844=>896,9845=>896,9846=>896,9847=>896,9848=>896,9849=>896,9850=>896,9851=>896,9852=>896,9853=>896,9854=>896,9855=>896,9856=>869,9857=>869,9858=>869,9859=>869,9860=>869,9861=>869,9862=>896,9863=>896,9864=>896,9865=>896,9866=>896,9867=>896,9868=>896,9869=>896,9870=>896,9871=>896,9872=>896,9873=>896,9874=>896,9875=>896,9876=>896,9877=>541,9878=>896,9879=>896,9880=>896,9881=>896,9882=>896,9883=>896,9884=>896,9888=>896,9889=>702,9890=>1004,9891=>1089,9892=>1175,9893=>903,9894=>838,9895=>838,9896=>838,9897=>838,9898=>838,9899=>838,9900=>838,9901=>838,9902=>838,9903=>838,9904=>844,9905=>838,9906=>732,9907=>732,9908=>732,9909=>732,9910=>850,9911=>732,9912=>732,9920=>838,9921=>838,9922=>838,9923=>838,9954=>732,9985=>838,9986=>838,9987=>838,9988=>838,9990=>838,9991=>838,9992=>838,9993=>838,9996=>838,9997=>838,9998=>838,9999=>838,10000=>838,10001=>838,10002=>838,10003=>838,10004=>838,10005=>838,10006=>838,10007=>838,10008=>838,10009=>838,10010=>838,10011=>838,10012=>838,10013=>838,10014=>838,10015=>838,10016=>838,10017=>838,10018=>838,10019=>838,10020=>838,10021=>838,10022=>838,10023=>838,10025=>838,10026=>838,10027=>838,10028=>838,10029=>838,10030=>838,10031=>838,10032=>838,10033=>838,10034=>838,10035=>838,10036=>838,10037=>838,10038=>838,10039=>838,10040=>838,10041=>838,10042=>838,10043=>838,10044=>838,10045=>838,10046=>838,10047=>838,10048=>838,10049=>838,10050=>838,10051=>838,10052=>838,10053=>838,10054=>838,10055=>838,10056=>838,10057=>838,10058=>838,10059=>838,10061=>896,10063=>896,10064=>896,10065=>896,10066=>896,10070=>896,10072=>838,10073=>838,10074=>838,10075=>347,10076=>347,10077=>587,10078=>587,10081=>838,10082=>838,10083=>838,10084=>838,10085=>838,10086=>838,10087=>838,10088=>838,10089=>838,10090=>838,10091=>838,10092=>838,10093=>838,10094=>838,10095=>838,10096=>838,10097=>838,10098=>838,10099=>838,10100=>838,10101=>838,10102=>847,10103=>847,10104=>847,10105=>847,10106=>847,10107=>847,10108=>847,10109=>847,10110=>847,10111=>847,10112=>838,10113=>838,10114=>838,10115=>838,10116=>838,10117=>838,10118=>838,10119=>838,10120=>838,10121=>838,10122=>838,10123=>838,10124=>838,10125=>838,10126=>838,10127=>838,10128=>838,10129=>838,10130=>838,10131=>838,10132=>838,10136=>838,10137=>838,10138=>838,10139=>838,10140=>838,10141=>838,10142=>838,10143=>838,10144=>838,10145=>838,10146=>838,10147=>838,10148=>838,10149=>838,10150=>838,10151=>838,10152=>838,10153=>838,10154=>838,10155=>838,10156=>838,10157=>838,10158=>838,10159=>838,10161=>838,10162=>838,10163=>838,10164=>838,10165=>838,10166=>838,10167=>838,10168=>838,10169=>838,10170=>838,10171=>838,10172=>838,10173=>838,10174=>838,10181=>457,10182=>457,10208=>494,10214=>487,10215=>487,10216=>457,10217=>457,10218=>721,10219=>721,10224=>838,10225=>838,10226=>838,10227=>838,10228=>1157,10229=>1434,10230=>1434,10231=>1434,10232=>1434,10233=>1434,10234=>1434,10235=>1434,10236=>1434,10237=>1434,10238=>1434,10239=>1434,10240=>781,10241=>781,10242=>781,10243=>781,10244=>781,10245=>781,10246=>781,10247=>781,10248=>781,10249=>781,10250=>781,10251=>781,10252=>781,10253=>781,10254=>781,10255=>781,10256=>781,10257=>781,10258=>781,10259=>781,10260=>781,10261=>781,10262=>781,10263=>781,10264=>781,10265=>781,10266=>781,10267=>781,10268=>781,10269=>781,10270=>781,10271=>781,10272=>781,10273=>781,10274=>781,10275=>781,10276=>781,10277=>781,10278=>781,10279=>781,10280=>781,10281=>781,10282=>781,10283=>781,10284=>781,10285=>781,10286=>781,10287=>781,10288=>781,10289=>781,10290=>781,10291=>781,10292=>781,10293=>781,10294=>781,10295=>781,10296=>781,10297=>781,10298=>781,10299=>781,10300=>781,10301=>781,10302=>781,10303=>781,10304=>781,10305=>781,10306=>781,10307=>781,10308=>781,10309=>781,10310=>781,10311=>781,10312=>781,10313=>781,10314=>781,10315=>781,10316=>781,10317=>781,10318=>781,10319=>781,10320=>781,10321=>781,10322=>781,10323=>781,10324=>781,10325=>781,10326=>781,10327=>781,10328=>781,10329=>781,10330=>781,10331=>781,10332=>781,10333=>781,10334=>781,10335=>781,10336=>781,10337=>781,10338=>781,10339=>781,10340=>781,10341=>781,10342=>781,10343=>781,10344=>781,10345=>781,10346=>781,10347=>781,10348=>781,10349=>781,10350=>781,10351=>781,10352=>781,10353=>781,10354=>781,10355=>781,10356=>781,10357=>781,10358=>781,10359=>781,10360=>781,10361=>781,10362=>781,10363=>781,10364=>781,10365=>781,10366=>781,10367=>781,10368=>781,10369=>781,10370=>781,10371=>781,10372=>781,10373=>781,10374=>781,10375=>781,10376=>781,10377=>781,10378=>781,10379=>781,10380=>781,10381=>781,10382=>781,10383=>781,10384=>781,10385=>781,10386=>781,10387=>781,10388=>781,10389=>781,10390=>781,10391=>781,10392=>781,10393=>781,10394=>781,10395=>781,10396=>781,10397=>781,10398=>781,10399=>781,10400=>781,10401=>781,10402=>781,10403=>781,10404=>781,10405=>781,10406=>781,10407=>781,10408=>781,10409=>781,10410=>781,10411=>781,10412=>781,10413=>781,10414=>781,10415=>781,10416=>781,10417=>781,10418=>781,10419=>781,10420=>781,10421=>781,10422=>781,10423=>781,10424=>781,10425=>781,10426=>781,10427=>781,10428=>781,10429=>781,10430=>781,10431=>781,10432=>781,10433=>781,10434=>781,10435=>781,10436=>781,10437=>781,10438=>781,10439=>781,10440=>781,10441=>781,10442=>781,10443=>781,10444=>781,10445=>781,10446=>781,10447=>781,10448=>781,10449=>781,10450=>781,10451=>781,10452=>781,10453=>781,10454=>781,10455=>781,10456=>781,10457=>781,10458=>781,10459=>781,10460=>781,10461=>781,10462=>781,10463=>781,10464=>781,10465=>781,10466=>781,10467=>781,10468=>781,10469=>781,10470=>781,10471=>781,10472=>781,10473=>781,10474=>781,10475=>781,10476=>781,10477=>781,10478=>781,10479=>781,10480=>781,10481=>781,10482=>781,10483=>781,10484=>781,10485=>781,10486=>781,10487=>781,10488=>781,10489=>781,10490=>781,10491=>781,10492=>781,10493=>781,10494=>781,10495=>781,10502=>838,10503=>838,10506=>838,10507=>838,10560=>838,10561=>838,10627=>753,10628=>753,10702=>838,10703=>1046,10704=>1046,10705=>1000,10706=>1000,10707=>1000,10708=>1000,10709=>1000,10731=>494,10746=>838,10747=>838,10752=>1000,10753=>1000,10754=>1000,10764=>1661,10765=>563,10766=>563,10767=>563,10768=>563,10769=>563,10770=>563,10771=>563,10772=>563,10773=>563,10774=>563,10775=>563,10776=>563,10777=>563,10778=>563,10779=>563,10780=>563,10799=>838,10858=>838,10859=>838,10877=>838,10878=>838,10879=>838,10880=>838,10881=>838,10882=>838,10883=>838,10884=>838,10885=>838,10886=>838,10887=>838,10888=>838,10889=>838,10890=>838,10891=>838,10892=>838,10893=>838,10894=>838,10895=>838,10896=>838,10897=>838,10898=>838,10899=>838,10900=>838,10901=>838,10902=>838,10903=>838,10904=>838,10905=>838,10906=>838,10907=>838,10908=>838,10909=>838,10910=>838,10911=>838,10912=>838,10926=>838,10927=>838,10928=>838,10929=>838,10930=>838,10931=>838,10932=>838,10933=>838,10934=>838,10935=>838,10936=>838,10937=>838,10938=>838,11001=>838,11002=>838,11008=>838,11009=>838,11010=>838,11011=>838,11012=>838,11013=>838,11014=>838,11015=>838,11016=>838,11017=>838,11018=>838,11019=>838,11020=>838,11021=>838,11022=>838,11023=>838,11024=>838,11025=>838,11026=>945,11027=>945,11028=>945,11029=>945,11030=>769,11031=>769,11032=>769,11033=>769,11034=>945,11039=>869,11040=>869,11041=>873,11042=>873,11043=>873,11044=>1119,11091=>869,11092=>869,11360=>637,11361=>360,11362=>637,11363=>733,11364=>770,11365=>675,11366=>478,11367=>956,11368=>712,11369=>775,11370=>665,11371=>725,11372=>582,11373=>860,11374=>995,11375=>774,11376=>860,11377=>778,11378=>1221,11379=>1056,11380=>652,11381=>698,11382=>565,11383=>782,11385=>538,11386=>687,11387=>559,11388=>219,11389=>487,11390=>720,11391=>725,11520=>663,11521=>676,11522=>661,11523=>629,11524=>661,11525=>1032,11526=>718,11527=>1032,11528=>648,11529=>667,11530=>1032,11531=>673,11532=>677,11533=>1036,11534=>680,11535=>886,11536=>1032,11537=>683,11538=>674,11539=>1035,11540=>1033,11541=>1027,11542=>676,11543=>673,11544=>667,11545=>667,11546=>660,11547=>671,11548=>1039,11549=>673,11550=>692,11551=>659,11552=>1048,11553=>660,11554=>654,11555=>670,11556=>733,11557=>1017,11568=>691,11569=>941,11570=>941,11571=>725,11572=>725,11573=>725,11574=>676,11575=>774,11576=>774,11577=>683,11578=>683,11579=>802,11580=>989,11581=>761,11582=>623,11583=>761,11584=>941,11585=>941,11586=>373,11587=>740,11588=>837,11589=>914,11590=>672,11591=>737,11592=>680,11593=>683,11594=>602,11595=>1039,11596=>778,11597=>837,11598=>683,11599=>372,11600=>778,11601=>373,11602=>725,11603=>691,11604=>941,11605=>941,11606=>837,11607=>373,11608=>836,11609=>941,11610=>941,11611=>734,11612=>876,11613=>771,11614=>734,11615=>683,11616=>774,11617=>837,11618=>683,11619=>850,11620=>697,11621=>850,11631=>716,11800=>580,11807=>838,11810=>457,11811=>457,11812=>457,11813=>457,11822=>580,19904=>896,19905=>896,19906=>896,19907=>896,19908=>896,19909=>896,19910=>896,19911=>896,19912=>896,19913=>896,19914=>896,19915=>896,19916=>896,19917=>896,19918=>896,19919=>896,19920=>896,19921=>896,19922=>896,19923=>896,19924=>896,19925=>896,19926=>896,19927=>896,19928=>896,19929=>896,19930=>896,19931=>896,19932=>896,19933=>896,19934=>896,19935=>896,19936=>896,19937=>896,19938=>896,19939=>896,19940=>896,19941=>896,19942=>896,19943=>896,19944=>896,19945=>896,19946=>896,19947=>896,19948=>896,19949=>896,19950=>896,19951=>896,19952=>896,19953=>896,19954=>896,19955=>896,19956=>896,19957=>896,19958=>896,19959=>896,19960=>896,19961=>896,19962=>896,19963=>896,19964=>896,19965=>896,19966=>896,19967=>896,42192=>762,42193=>733,42194=>733,42195=>830,42196=>682,42197=>682,42198=>821,42199=>775,42200=>775,42201=>530,42202=>734,42203=>734,42204=>725,42205=>683,42206=>683,42207=>995,42208=>837,42209=>637,42210=>720,42211=>770,42212=>770,42213=>774,42214=>774,42215=>837,42216=>775,42217=>530,42218=>1103,42219=>771,42220=>724,42221=>762,42222=>774,42223=>774,42224=>683,42225=>683,42226=>372,42227=>850,42228=>812,42229=>812,42230=>557,42231=>830,42232=>322,42233=>322,42234=>674,42235=>674,42236=>322,42237=>322,42238=>588,42239=>588,42564=>720,42565=>595,42566=>436,42567=>440,42572=>1405,42573=>1173,42576=>1234,42577=>1027,42580=>1174,42581=>972,42582=>1093,42583=>958,42594=>1085,42595=>924,42596=>1096,42597=>912,42598=>1260,42599=>997,42600=>850,42601=>687,42602=>1037,42603=>868,42604=>1406,42605=>1106,42606=>961,42634=>963,42635=>787,42636=>682,42637=>580,42644=>808,42645=>712,42760=>500,42761=>500,42762=>500,42763=>500,42764=>500,42765=>500,42766=>500,42767=>500,42768=>500,42769=>500,42770=>500,42771=>500,42772=>500,42773=>500,42774=>500,42779=>400,42780=>400,42781=>287,42782=>287,42783=>287,42786=>444,42787=>390,42788=>540,42789=>540,42790=>837,42791=>712,42792=>1031,42793=>857,42794=>696,42795=>557,42800=>559,42801=>595,42802=>1349,42803=>1052,42804=>1284,42805=>1064,42806=>1216,42807=>1054,42808=>1079,42809=>922,42810=>1079,42811=>922,42812=>1035,42813=>922,42814=>698,42815=>549,42816=>656,42817=>688,42822=>850,42823=>542,42824=>683,42825=>531,42826=>918,42827=>814,42830=>1406,42831=>1106,42832=>733,42833=>716,42834=>948,42835=>937,42838=>850,42839=>716,42852=>738,42853=>716,42854=>738,42855=>716,42880=>637,42881=>343,42882=>837,42883=>712,42889=>400,42890=>386,42891=>456,42892=>306,42893=>808,42894=>693,42896=>928,42897=>768,42912=>821,42913=>716,42914=>775,42915=>665,42916=>837,42917=>712,42918=>770,42919=>493,42920=>720,42921=>595,42922=>886,43002=>1062,43003=>683,43004=>733,43005=>995,43006=>372,43007=>1325,61184=>216,61185=>242,61186=>267,61187=>277,61188=>282,61189=>242,61190=>216,61191=>242,61192=>267,61193=>277,61194=>267,61195=>242,61196=>216,61197=>242,61198=>267,61199=>277,61200=>267,61201=>242,61202=>216,61203=>242,61204=>282,61205=>277,61206=>267,61207=>242,61208=>216,61209=>282,62464=>612,62465=>612,62466=>653,62467=>902,62468=>622,62469=>622,62470=>661,62471=>895,62472=>589,62473=>622,62474=>1163,62475=>626,62476=>627,62477=>893,62478=>612,62479=>626,62480=>924,62481=>627,62482=>744,62483=>634,62484=>886,62485=>626,62486=>907,62487=>626,62488=>621,62489=>628,62490=>677,62491=>626,62492=>621,62493=>630,62494=>627,62495=>571,62496=>622,62497=>631,62498=>612,62499=>611,62500=>618,62501=>671,62502=>963,62504=>1023,62505=>844,62506=>563,62507=>563,62508=>563,62509=>563,62510=>563,62511=>563,62512=>555,62513=>555,62514=>555,62515=>555,62516=>573,62517=>573,62518=>573,62519=>824,62520=>824,62521=>824,62522=>824,62523=>824,62524=>611,62525=>611,62526=>611,62527=>611,62528=>611,62529=>611,63173=>687,64256=>810,64257=>741,64258=>741,64259=>1115,64260=>1116,64261=>808,64262=>1020,64275=>1388,64276=>1384,64277=>1378,64278=>1384,64279=>1713,64285=>294,64286=>0,64287=>519,64288=>665,64289=>939,64290=>788,64291=>920,64292=>786,64293=>857,64294=>869,64295=>821,64296=>890,64297=>838,64298=>758,64299=>758,64300=>758,64301=>758,64302=>728,64303=>728,64304=>728,64305=>610,64306=>447,64307=>588,64308=>687,64309=>437,64310=>485,64312=>679,64313=>435,64314=>578,64315=>566,64316=>605,64318=>724,64320=>453,64321=>680,64323=>675,64324=>658,64326=>653,64327=>736,64328=>602,64329=>758,64330=>683,64331=>343,64332=>610,64333=>566,64334=>658,64335=>710,64338=>1005,64339=>1059,64340=>375,64341=>408,64342=>1005,64343=>1059,64344=>375,64345=>408,64346=>1005,64347=>1059,64348=>375,64349=>408,64350=>1005,64351=>1059,64352=>375,64353=>408,64354=>1005,64355=>1059,64356=>375,64357=>408,64358=>1005,64359=>1059,64360=>375,64361=>408,64362=>1162,64363=>1191,64364=>655,64365=>720,64366=>1162,64367=>1191,64368=>655,64369=>720,64370=>721,64371=>721,64372=>721,64373=>721,64374=>721,64375=>721,64376=>721,64377=>721,64378=>721,64379=>721,64380=>721,64381=>721,64382=>721,64383=>721,64384=>721,64385=>721,64386=>513,64387=>578,64388=>513,64389=>578,64390=>513,64391=>578,64392=>513,64393=>578,64394=>576,64395=>622,64396=>576,64397=>622,64398=>1024,64399=>1024,64400=>582,64401=>582,64402=>1024,64403=>1024,64404=>582,64405=>582,64406=>1024,64407=>1024,64408=>582,64409=>582,64410=>1024,64411=>1024,64412=>582,64413=>582,64414=>854,64415=>900,64416=>854,64417=>900,64418=>375,64419=>408,64426=>938,64427=>880,64428=>693,64429=>660,64467=>824,64468=>843,64469=>476,64470=>552,64473=>622,64474=>627,64488=>375,64489=>408,64508=>917,64509=>1012,64510=>375,64511=>408,65024=>0,65025=>0,65026=>0,65027=>0,65028=>0,65029=>0,65030=>0,65031=>0,65032=>0,65033=>0,65034=>0,65035=>0,65036=>0,65037=>0,65038=>0,65039=>0,65056=>0,65057=>0,65058=>0,65059=>0,65136=>342,65137=>342,65138=>342,65139=>346,65140=>342,65142=>342,65143=>342,65144=>342,65145=>342,65146=>342,65147=>342,65148=>342,65149=>342,65150=>342,65151=>342,65152=>511,65153=>343,65154=>375,65155=>343,65156=>375,65157=>622,65158=>627,65159=>343,65160=>375,65161=>917,65162=>917,65163=>375,65164=>408,65165=>343,65166=>375,65167=>1005,65168=>1059,65169=>375,65170=>408,65171=>590,65172=>606,65173=>1005,65174=>1059,65175=>375,65176=>408,65177=>1005,65178=>1059,65179=>375,65180=>408,65181=>721,65182=>721,65183=>721,65184=>721,65185=>721,65186=>721,65187=>721,65188=>721,65189=>721,65190=>721,65191=>721,65192=>721,65193=>513,65194=>578,65195=>513,65196=>578,65197=>576,65198=>622,65199=>576,65200=>622,65201=>1380,65202=>1414,65203=>983,65204=>1018,65205=>1380,65206=>1414,65207=>983,65208=>1018,65209=>1345,65210=>1364,65211=>966,65212=>985,65213=>1345,65214=>1364,65215=>966,65216=>985,65217=>1039,65218=>1071,65219=>942,65220=>974,65221=>1039,65222=>1071,65223=>942,65224=>974,65225=>683,65226=>683,65227=>683,65228=>564,65229=>683,65230=>683,65231=>683,65232=>564,65233=>1162,65234=>1191,65235=>655,65236=>720,65237=>894,65238=>901,65239=>655,65240=>720,65241=>917,65242=>931,65243=>582,65244=>582,65245=>868,65246=>893,65247=>375,65248=>408,65249=>733,65250=>784,65251=>619,65252=>670,65253=>854,65254=>900,65255=>375,65256=>408,65257=>590,65258=>606,65259=>693,65260=>660,65261=>622,65262=>627,65263=>917,65264=>1012,65265=>917,65266=>1012,65267=>375,65268=>408,65269=>745,65270=>759,65271=>745,65272=>759,65273=>745,65274=>759,65275=>745,65276=>759,65279=>0,65529=>0,65530=>0,65531=>0,65532=>0,65533=>1113,65535=>600); -// --- EOF --- diff --git a/libraries/tcpdf/fonts/dejavusansb.z b/libraries/tcpdf/fonts/dejavusansb.z deleted file mode 100644 index 07031ce34da2e7d17ce67aa85fea28fe941c4444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347269 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 z 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

Em|_`oNolqBVruS4V_`Vm~j22-JQ#~DMWWy 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 P diff --git a/libraries/tcpdf/fonts/helvetica.php b/libraries/tcpdf/fonts/helvetica.php deleted file mode 100644 index d1aa6d851d..0000000000 --- a/libraries/tcpdf/fonts/helvetica.php +++ /dev/null @@ -1,13 +0,0 @@ -32,'FontBBox'=>'[-166 -225 1000 931]','ItalicAngle'=>0,'Ascent'=>931,'Descent'=>-225,'Leading'=>0,'CapHeight'=>718,'XHeight'=>523,'StemV'=>88,'StemH'=>76,'AvgWidth'=>513,'MaxWidth'=>1015,'MissingWidth'=>513); -$cw=array(0=>500,1=>500,2=>500,3=>500,4=>500,5=>500,6=>500,7=>500,8=>500,9=>500,10=>500,11=>500,12=>500,13=>500,14=>500,15=>500,16=>500,17=>500,18=>500,19=>500,20=>500,21=>500,22=>500,23=>500,24=>500,25=>500,26=>500,27=>500,28=>500,29=>500,30=>500,31=>500,32=>278,33=>278,34=>355,35=>556,36=>556,37=>889,38=>667,39=>191,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>278,59=>278,60=>584,61=>584,62=>584,63=>556,64=>1015,65=>667,66=>667,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>500,75=>667,76=>556,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>278,92=>278,93=>277,94=>469,95=>556,96=>333,97=>556,98=>556,99=>500,100=>556,101=>556,102=>278,103=>556,104=>556,105=>222,106=>222,107=>500,108=>222,109=>833,110=>556,111=>556,112=>556,113=>556,114=>333,115=>500,116=>278,117=>556,118=>500,119=>722,120=>500,121=>500,122=>500,123=>334,124=>260,125=>334,126=>584,127=>500,128=>655,129=>500,130=>222,131=>278,132=>333,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>250,140=>1000,141=>500,142=>611,143=>500,144=>500,145=>222,146=>221,147=>333,148=>333,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>500,155=>250,156=>938,157=>500,158=>500,159=>667,160=>278,161=>278,162=>556,163=>556,164=>556,165=>556,166=>260,167=>556,168=>333,169=>737,170=>370,171=>448,172=>584,173=>333,174=>737,175=>333,176=>606,177=>584,178=>350,179=>350,180=>333,181=>556,182=>537,183=>278,184=>333,185=>350,186=>365,187=>448,188=>869,189=>869,190=>879,191=>556,192=>667,193=>667,194=>667,195=>667,196=>667,197=>667,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>666,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>896,231=>500,232=>556,233=>556,234=>556,235=>556,236=>251,237=>251,238=>251,239=>251,240=>556,241=>556,242=>556,243=>556,244=>556,245=>556,246=>556,247=>584,248=>611,249=>556,250=>556,251=>556,252=>556,253=>500,254=>555,255=>500); - -// --- EOF --- diff --git a/libraries/tcpdf/include/sRGB.icc b/libraries/tcpdf/include/sRGB.icc deleted file mode 100644 index 1d8f7419c3bf2c6a3dd78f2c679fdefbda1776a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6922 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 VE+#f@4I@33!-(c_IEmSS@NW)(3LO9d diff --git a/libraries/tcpdf/include/tcpdf_colors.php b/libraries/tcpdf/include/tcpdf_colors.php deleted file mode 100644 index 77f1c4cc84..0000000000 --- a/libraries/tcpdf/include/tcpdf_colors.php +++ /dev/null @@ -1,462 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Array of WEB safe colors -// -//============================================================+ - -/** - * @file - * PHP color class for TCPDF - * @author Nicola Asuni - * @package com.tecnick.tcpdf - */ - -/** - * @class TCPDF_COLORS - * PHP color class for TCPDF - * @package com.tecnick.tcpdf - * @version 1.0.004 - * @author Nicola Asuni - info@tecnick.com - */ -class TCPDF_COLORS { - - /** - * Array of WEB safe colors - * @public static - */ - public static $webcolor = array ( - 'aliceblue' => 'f0f8ff', - 'antiquewhite' => 'faebd7', - 'aqua' => '00ffff', - 'aquamarine' => '7fffd4', - 'azure' => 'f0ffff', - 'beige' => 'f5f5dc', - 'bisque' => 'ffe4c4', - 'black' => '000000', - 'blanchedalmond' => 'ffebcd', - 'blue' => '0000ff', - 'blueviolet' => '8a2be2', - 'brown' => 'a52a2a', - 'burlywood' => 'deb887', - 'cadetblue' => '5f9ea0', - 'chartreuse' => '7fff00', - 'chocolate' => 'd2691e', - 'coral' => 'ff7f50', - 'cornflowerblue' => '6495ed', - 'cornsilk' => 'fff8dc', - 'crimson' => 'dc143c', - 'cyan' => '00ffff', - 'darkblue' => '00008b', - 'darkcyan' => '008b8b', - 'darkgoldenrod' => 'b8860b', - 'dkgray' => 'a9a9a9', - 'darkgray' => 'a9a9a9', - 'darkgrey' => 'a9a9a9', - 'darkgreen' => '006400', - 'darkkhaki' => 'bdb76b', - 'darkmagenta' => '8b008b', - 'darkolivegreen' => '556b2f', - 'darkorange' => 'ff8c00', - 'darkorchid' => '9932cc', - 'darkred' => '8b0000', - 'darksalmon' => 'e9967a', - 'darkseagreen' => '8fbc8f', - 'darkslateblue' => '483d8b', - 'darkslategray' => '2f4f4f', - 'darkslategrey' => '2f4f4f', - 'darkturquoise' => '00ced1', - 'darkviolet' => '9400d3', - 'deeppink' => 'ff1493', - 'deepskyblue' => '00bfff', - 'dimgray' => '696969', - 'dimgrey' => '696969', - 'dodgerblue' => '1e90ff', - 'firebrick' => 'b22222', - 'floralwhite' => 'fffaf0', - 'forestgreen' => '228b22', - 'fuchsia' => 'ff00ff', - 'gainsboro' => 'dcdcdc', - 'ghostwhite' => 'f8f8ff', - 'gold' => 'ffd700', - 'goldenrod' => 'daa520', - 'gray' => '808080', - 'grey' => '808080', - 'green' => '008000', - 'greenyellow' => 'adff2f', - 'honeydew' => 'f0fff0', - 'hotpink' => 'ff69b4', - 'indianred' => 'cd5c5c', - 'indigo' => '4b0082', - 'ivory' => 'fffff0', - 'khaki' => 'f0e68c', - 'lavender' => 'e6e6fa', - 'lavenderblush' => 'fff0f5', - 'lawngreen' => '7cfc00', - 'lemonchiffon' => 'fffacd', - 'lightblue' => 'add8e6', - 'lightcoral' => 'f08080', - 'lightcyan' => 'e0ffff', - 'lightgoldenrodyellow' => 'fafad2', - 'ltgray' => 'd3d3d3', - 'lightgray' => 'd3d3d3', - 'lightgrey' => 'd3d3d3', - 'lightgreen' => '90ee90', - 'lightpink' => 'ffb6c1', - 'lightsalmon' => 'ffa07a', - 'lightseagreen' => '20b2aa', - 'lightskyblue' => '87cefa', - 'lightslategray' => '778899', - 'lightslategrey' => '778899', - 'lightsteelblue' => 'b0c4de', - 'lightyellow' => 'ffffe0', - 'lime' => '00ff00', - 'limegreen' => '32cd32', - 'linen' => 'faf0e6', - 'magenta' => 'ff00ff', - 'maroon' => '800000', - 'mediumaquamarine' => '66cdaa', - 'mediumblue' => '0000cd', - 'mediumorchid' => 'ba55d3', - 'mediumpurple' => '9370d8', - 'mediumseagreen' => '3cb371', - 'mediumslateblue' => '7b68ee', - 'mediumspringgreen' => '00fa9a', - 'mediumturquoise' => '48d1cc', - 'mediumvioletred' => 'c71585', - 'midnightblue' => '191970', - 'mintcream' => 'f5fffa', - 'mistyrose' => 'ffe4e1', - 'moccasin' => 'ffe4b5', - 'navajowhite' => 'ffdead', - 'navy' => '000080', - 'oldlace' => 'fdf5e6', - 'olive' => '808000', - 'olivedrab' => '6b8e23', - 'orange' => 'ffa500', - 'orangered' => 'ff4500', - 'orchid' => 'da70d6', - 'palegoldenrod' => 'eee8aa', - 'palegreen' => '98fb98', - 'paleturquoise' => 'afeeee', - 'palevioletred' => 'd87093', - 'papayawhip' => 'ffefd5', - 'peachpuff' => 'ffdab9', - 'peru' => 'cd853f', - 'pink' => 'ffc0cb', - 'plum' => 'dda0dd', - 'powderblue' => 'b0e0e6', - 'purple' => '800080', - 'red' => 'ff0000', - 'rosybrown' => 'bc8f8f', - 'royalblue' => '4169e1', - 'saddlebrown' => '8b4513', - 'salmon' => 'fa8072', - 'sandybrown' => 'f4a460', - 'seagreen' => '2e8b57', - 'seashell' => 'fff5ee', - 'sienna' => 'a0522d', - 'silver' => 'c0c0c0', - 'skyblue' => '87ceeb', - 'slateblue' => '6a5acd', - 'slategray' => '708090', - 'slategrey' => '708090', - 'snow' => 'fffafa', - 'springgreen' => '00ff7f', - 'steelblue' => '4682b4', - 'tan' => 'd2b48c', - 'teal' => '008080', - 'thistle' => 'd8bfd8', - 'tomato' => 'ff6347', - 'turquoise' => '40e0d0', - 'violet' => 'ee82ee', - 'wheat' => 'f5deb3', - 'white' => 'ffffff', - 'whitesmoke' => 'f5f5f5', - 'yellow' => 'ffff00', - 'yellowgreen' => '9acd32' - ); // end of web colors - - /** - * Array of valid JavaScript color names - * @public static - */ - public static $jscolor = array ('transparent', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'dkGray', 'gray', 'ltGray'); - - /** - * Array of Spot colors (C,M,Y,K,name) - * Color keys must be in lowercase and without spaces. - * As long as no open standard for spot colours exists, you have to buy a colour book by one of the colour manufacturers and insert the values and names of spot colours directly. - * Common industry standard spot colors are: ANPA-COLOR, DIC, FOCOLTONE, GCMI, HKS, PANTONE, TOYO, TRUMATCH. - * @public static - */ - public static $spotcolor = array ( - // special registration colors - 'none' => array( 0, 0, 0, 0, 'None'), - 'all' => array(100, 100, 100, 100, 'All'), - // standard CMYK colors - 'cyan' => array(100, 0, 0, 0, 'Cyan'), - 'magenta' => array( 0, 100, 0, 0, 'Magenta'), - 'yellow' => array( 0, 0, 100, 0, 'Yellow'), - 'key' => array( 0, 0, 0, 100, 'Key'), - // alias - 'white' => array( 0, 0, 0, 0, 'White'), - 'black' => array( 0, 0, 0, 100, 'Black'), - // standard RGB colors - 'red' => array( 0, 100, 100, 0, 'Red'), - 'green' => array(100, 0, 100, 0, 'Green'), - 'blue' => array(100, 100, 0, 0, 'Blue'), - // Add here standard spot colors or dynamically define them with AddSpotColor() - // ... - ); // end of spot colors - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** - * Return the Spot color array. - * @param $name (string) Name of the spot color. - * @param $spotc (array) Reference to an array of spot colors. - * @return (array) Spot color array or false if not defined. - * @since 5.9.125 (2011-10-03) - * @public static - */ - public static function getSpotColor($name, &$spotc) { - if (isset($spotc[$name])) { - return $spotc[$name]; - } - $color = preg_replace('/[\s]*/', '', $name); // remove extra spaces - $color = strtolower($color); - if (isset(self::$spotcolor[$color])) { - if (!isset($spotc[$name])) { - $i = (1 + count($spotc)); - $spotc[$name] = array('C' => self::$spotcolor[$color][0], 'M' => self::$spotcolor[$color][1], 'Y' => self::$spotcolor[$color][2], 'K' => self::$spotcolor[$color][3], 'name' => self::$spotcolor[$color][4], 'i' => $i); - } - return $spotc[self::$spotcolor[$color][4]]; - } - return false; - } - - /** - * Returns an array (RGB or CMYK) from an html color name, or a six-digit (i.e. #3FE5AA), or three-digit (i.e. #7FF) hexadecimal color, or a javascript color array, or javascript color name. - * @param $hcolor (string) HTML color. - * @param $spotc (array) Reference to an array of spot colors. - * @param $defcol (array) Color to return in case of error. - * @return array RGB or CMYK color, or false in case of error. - * @public static - */ - public static function convertHTMLColorToDec($hcolor, &$spotc, $defcol=array('R'=>128,'G'=>128,'B'=>128)) { - $color = preg_replace('/[\s]*/', '', $hcolor); // remove extra spaces - $color = strtolower($color); - // check for javascript color array syntax - if (strpos($color, '[') !== false) { - if (preg_match('/[\[][\"\'](t|g|rgb|cmyk)[\"\'][\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\]]/', $color, $m) > 0) { - $returncolor = array(); - switch ($m[1]) { - case 'cmyk': { - // RGB - $returncolor['C'] = max(0, min(100, (floatval($m[2]) * 100))); - $returncolor['M'] = max(0, min(100, (floatval($m[3]) * 100))); - $returncolor['Y'] = max(0, min(100, (floatval($m[4]) * 100))); - $returncolor['K'] = max(0, min(100, (floatval($m[5]) * 100))); - break; - } - case 'rgb': { - // RGB - $returncolor['R'] = max(0, min(255, (floatval($m[2]) * 255))); - $returncolor['G'] = max(0, min(255, (floatval($m[3]) * 255))); - $returncolor['B'] = max(0, min(255, (floatval($m[4]) * 255))); - break; - } - case 'g': { - // grayscale - $returncolor['G'] = max(0, min(255, (floatval($m[2]) * 255))); - break; - } - case 't': - default: { - // transparent (empty array) - break; - } - } - return $returncolor; - } - } elseif ((substr($color, 0, 4) != 'cmyk') AND (substr($color, 0, 3) != 'rgb') AND (($dotpos = strpos($color, '.')) !== false)) { - // remove class parent (i.e.: color.red) - $color = substr($color, ($dotpos + 1)); - if ($color == 'transparent') { - // transparent (empty array) - return array(); - } - } - if (strlen($color) == 0) { - return $defcol; - } - // RGB ARRAY - if (substr($color, 0, 3) == 'rgb') { - $codes = substr($color, 4); - $codes = str_replace(')', '', $codes); - $returncolor = explode(',', $codes); - foreach ($returncolor as $key => $val) { - if (strpos($val, '%') > 0) { - // percentage - $returncolor[$key] = (255 * intval($val) / 100); - } else { - $returncolor[$key] = intval($val); - } - // normalize value - $returncolor[$key] = max(0, min(255, $returncolor[$key])); - } - return $returncolor; - } - // CMYK ARRAY - if (substr($color, 0, 4) == 'cmyk') { - $codes = substr($color, 5); - $codes = str_replace(')', '', $codes); - $returncolor = explode(',', $codes); - foreach ($returncolor as $key => $val) { - if (strpos($val, '%') !== false) { - // percentage - $returncolor[$key] = (100 * intval($val) / 100); - } else { - $returncolor[$key] = intval($val); - } - // normalize value - $returncolor[$key] = max(0, min(100, $returncolor[$key])); - } - return $returncolor; - } - if ($color[0] != '#') { - // COLOR NAME - if (isset(self::$webcolor[$color])) { - // web color - $color_code = self::$webcolor[$color]; - } else { - // spot color - $returncolor = self::getSpotColor($color, $spotc); - if ($returncolor === false) { - $returncolor = $defcol; - } - return $returncolor; - } - } else { - $color_code = substr($color, 1); - } - // HEXADECIMAL REPRESENTATION - switch (strlen($color_code)) { - case 3: { - // 3-digit RGB hexadecimal representation - $r = substr($color_code, 0, 1); - $g = substr($color_code, 1, 1); - $b = substr($color_code, 2, 1); - $returncolor = array(); - $returncolor['R'] = max(0, min(255, hexdec($r.$r))); - $returncolor['G'] = max(0, min(255, hexdec($g.$g))); - $returncolor['B'] = max(0, min(255, hexdec($b.$b))); - break; - } - case 6: { - // 6-digit RGB hexadecimal representation - $returncolor = array(); - $returncolor['R'] = max(0, min(255, hexdec(substr($color_code, 0, 2)))); - $returncolor['G'] = max(0, min(255, hexdec(substr($color_code, 2, 2)))); - $returncolor['B'] = max(0, min(255, hexdec(substr($color_code, 4, 2)))); - break; - } - case 8: { - // 8-digit CMYK hexadecimal representation - $returncolor = array(); - $returncolor['C'] = max(0, min(100, round(hexdec(substr($color_code, 0, 2)) / 2.55))); - $returncolor['M'] = max(0, min(100, round(hexdec(substr($color_code, 2, 2)) / 2.55))); - $returncolor['Y'] = max(0, min(100, round(hexdec(substr($color_code, 4, 2)) / 2.55))); - $returncolor['K'] = max(0, min(100, round(hexdec(substr($color_code, 6, 2)) / 2.55))); - break; - } - default: { - $returncolor = $defcol; - break; - } - } - return $returncolor; - } - - /** - * Convert a color array into a string representation. - * @param $c (array) Array of colors. - * @return (string) The color array representation. - * @since 5.9.137 (2011-12-01) - * @public static - */ - public static function getColorStringFromArray($c) { - $c = array_values($c); - $color = '['; - switch (count($c)) { - case 4: { - // CMYK - $color .= sprintf('%F %F %F %F', (max(0, min(100, floatval($c[0]))) / 100), (max(0, min(100, floatval($c[1]))) / 100), (max(0, min(100, floatval($c[2]))) / 100), (max(0, min(100, floatval($c[3]))) / 100)); - break; - } - case 3: { - // RGB - $color .= sprintf('%F %F %F', (max(0, min(255, floatval($c[0]))) / 255), (max(0, min(255, floatval($c[1]))) / 255), (max(0, min(255, floatval($c[2]))) / 255)); - break; - } - case 1: { - // grayscale - $color .= sprintf('%F', (max(0, min(255, floatval($c[0]))) / 255)); - break; - } - } - $color .= ']'; - return $color; - } - - /** - * Convert color to javascript color. - * @param $color (string) color name or "#RRGGBB" - * @protected - * @since 2.1.002 (2008-02-12) - * @public static - */ - public static function _JScolor($color) { - if (substr($color, 0, 1) == '#') { - return sprintf("['RGB',%F,%F,%F]", (hexdec(substr($color, 1, 2)) / 255), (hexdec(substr($color, 3, 2)) / 255), (hexdec(substr($color, 5, 2)) / 255)); - } - if (!in_array($color, self::$jscolor)) { - // default transparent color - $color = $jscolor[0]; - } - return 'color.'.$color; - } - - -} // END OF TCPDF_COLORS CLASS - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/libraries/tcpdf/include/tcpdf_font_data.php b/libraries/tcpdf/include/tcpdf_font_data.php deleted file mode 100644 index 974e72ec72..0000000000 --- a/libraries/tcpdf/include/tcpdf_font_data.php +++ /dev/null @@ -1,18447 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : Unicode data and encoding maps for TCPDF. -// -//============================================================+ - -/** - * @file - * Unicode data and encoding maps for TCPDF. - * @author Nicola Asuni - * @package com.tecnick.tcpdf - */ - -/** - * @class TCPDF_FONT_DATA - * Unicode data and encoding maps for TCPDF. - * @package com.tecnick.tcpdf - * @version 1.0.001 - * @author Nicola Asuni - info@tecnick.com - */ -class TCPDF_FONT_DATA { - -/** - * Unicode code for Left-to-Right Mark. - * @public - */ -public static $uni_LRM = 8206; - -/** - * Unicode code for Right-to-Left Mark. - * @public - */ -public static $uni_RLM = 8207; - -/** - * Unicode code for Left-to-Right Embedding. - * @public - */ -public static $uni_LRE = 8234; - -/** - * Unicode code for Right-to-Left Embedding. - * @public - */ -public static $uni_RLE = 8235; - -/** - * Unicode code for Pop Directional Format. - * @public - */ -public static $uni_PDF = 8236; - -/** - * Unicode code for Left-to-Right Override. - * @public - */ -public static $uni_LRO = 8237; - -/** - * Unicode code for Right-to-Left Override. - * @public - */ -public static $uni_RLO = 8238; - -/** - * Pattern to test RTL (Righ-To-Left) strings using regular expressions. - * @public - */ -public static $uni_RE_PATTERN_RTL = "/( - \xD6\xBE # R - | \xD7[\x80\x83\x86\x90-\xAA\xB0-\xB4] # R - | \xDF[\x80-\xAA\xB4\xB5\xBA] # R - | \xE2\x80\x8F # R - | \xEF\xAC[\x9D\x9F\xA0-\xA8\xAA-\xB6\xB8-\xBC\xBE] # R - | \xEF\xAD[\x80\x81\x83\x84\x86-\x8F] # R - | \xF0\x90\xA0[\x80-\x85\x88\x8A-\xB5\xB7\xB8\xBC\xBF] # R - | \xF0\x90\xA4[\x80-\x99] # R - | \xF0\x90\xA8[\x80\x90-\x93\x95-\x97\x99-\xB3] # R - | \xF0\x90\xA9[\x80-\x87\x90-\x98] # R - | \xE2\x80[\xAB\xAE] # RLE & RLO - )/x"; - -/** - * Pattern to test Arabic strings using regular expressions. Source: http://www.w3.org/International/questions/qa-forms-utf-8 - * @public - */ -public static $uni_RE_PATTERN_ARABIC = "/( - \xD8[\x80-\x83\x8B\x8D\x9B\x9E\x9F\xA1-\xBA] # AL - | \xD9[\x80-\x8A\xAD-\xAF\xB1-\xBF] # AL - | \xDA[\x80-\xBF] # AL - | \xDB[\x80-\x95\x9D\xA5\xA6\xAE\xAF\xBA-\xBF] # AL - | \xDC[\x80-\x8D\x90\x92-\xAF] # AL - | \xDD[\x8D-\xAD] # AL - | \xDE[\x80-\xA5\xB1] # AL - | \xEF\xAD[\x90-\xBF] # AL - | \xEF\xAE[\x80-\xB1] # AL - | \xEF\xAF[\x93-\xBF] # AL - | \xEF[\xB0-\xB3][\x80-\xBF] # AL - | \xEF\xB4[\x80-\xBD] # AL - | \xEF\xB5[\x90-\xBF] # AL - | \xEF\xB6[\x80-\x8F\x92-\xBF] # AL - | \xEF\xB7[\x80-\x87\xB0-\xBC] # AL - | \xEF\xB9[\xB0-\xB4\xB6-\xBF] # AL - | \xEF\xBA[\x80-\xBF] # AL - | \xEF\xBB[\x80-\xBC] # AL - | \xD9[\xA0-\xA9\xAB\xAC] # AN - )/x"; - -/** - * Array of Unicode types. - * @public - */ -public static $uni_type = array( -0=>'BN', -1=>'BN', -2=>'BN', -3=>'BN', -4=>'BN', -5=>'BN', -6=>'BN', -7=>'BN', -8=>'BN', -9=>'S', -10=>'B', -11=>'S', -12=>'WS', -13=>'B', -14=>'BN', -15=>'BN', -16=>'BN', -17=>'BN', -18=>'BN', -19=>'BN', -20=>'BN', -21=>'BN', -22=>'BN', -23=>'BN', -24=>'BN', -25=>'BN', -26=>'BN', -27=>'BN', -28=>'B', -29=>'B', -30=>'B', -31=>'S', -32=>'WS', -33=>'ON', -34=>'ON', -35=>'ET', -36=>'ET', -37=>'ET', -38=>'ON', -39=>'ON', -40=>'ON', -41=>'ON', -42=>'ON', -43=>'ES', -44=>'CS', -45=>'ES', -46=>'CS', -47=>'CS', -48=>'EN', -49=>'EN', -50=>'EN', -51=>'EN', -52=>'EN', -53=>'EN', -54=>'EN', -55=>'EN', -56=>'EN', -57=>'EN', -58=>'CS', -59=>'ON', -60=>'ON', -61=>'ON', -62=>'ON', -63=>'ON', -64=>'ON', -65=>'L', -66=>'L', -67=>'L', -68=>'L', -69=>'L', -70=>'L', -71=>'L', -72=>'L', -73=>'L', -74=>'L', -75=>'L', -76=>'L', -77=>'L', -78=>'L', -79=>'L', -80=>'L', -81=>'L', -82=>'L', -83=>'L', -84=>'L', -85=>'L', -86=>'L', -87=>'L', -88=>'L', -89=>'L', -90=>'L', -91=>'ON', -92=>'ON', -93=>'ON', -94=>'ON', -95=>'ON', -96=>'ON', -97=>'L', -98=>'L', -99=>'L', -100=>'L', -101=>'L', -102=>'L', -103=>'L', -104=>'L', -105=>'L', -106=>'L', -107=>'L', -108=>'L', -109=>'L', -110=>'L', -111=>'L', -112=>'L', -113=>'L', -114=>'L', -115=>'L', -116=>'L', -117=>'L', -118=>'L', -119=>'L', -120=>'L', -121=>'L', -122=>'L', -123=>'ON', -124=>'ON', -125=>'ON', -126=>'ON', -127=>'BN', -128=>'BN', -129=>'BN', -130=>'BN', -131=>'BN', -132=>'BN', -133=>'B', -134=>'BN', -135=>'BN', -136=>'BN', -137=>'BN', -138=>'BN', -139=>'BN', -140=>'BN', -141=>'BN', -142=>'BN', -143=>'BN', -144=>'BN', -145=>'BN', -146=>'BN', -147=>'BN', -148=>'BN', -149=>'BN', -150=>'BN', -151=>'BN', -152=>'BN', -153=>'BN', -154=>'BN', -155=>'BN', -156=>'BN', -157=>'BN', -158=>'BN', -159=>'BN', -160=>'CS', -161=>'ON', -162=>'ET', -163=>'ET', -164=>'ET', -165=>'ET', -166=>'ON', -167=>'ON', -168=>'ON', -169=>'ON', -170=>'L', -171=>'ON', -172=>'ON', -173=>'BN', -174=>'ON', -175=>'ON', -176=>'ET', -177=>'ET', -178=>'EN', -179=>'EN', -180=>'ON', -181=>'L', -182=>'ON', -183=>'ON', -184=>'ON', -185=>'EN', -186=>'L', -187=>'ON', -188=>'ON', -189=>'ON', -190=>'ON', -191=>'ON', -192=>'L', -193=>'L', -194=>'L', -195=>'L', -196=>'L', -197=>'L', -198=>'L', -199=>'L', -200=>'L', -201=>'L', -202=>'L', -203=>'L', -204=>'L', -205=>'L', -206=>'L', -207=>'L', -208=>'L', -209=>'L', -210=>'L', -211=>'L', -212=>'L', -213=>'L', -214=>'L', -215=>'ON', -216=>'L', -217=>'L', -218=>'L', -219=>'L', -220=>'L', -221=>'L', -222=>'L', -223=>'L', -224=>'L', -225=>'L', -226=>'L', -227=>'L', -228=>'L', -229=>'L', -230=>'L', -231=>'L', -232=>'L', -233=>'L', -234=>'L', -235=>'L', -236=>'L', -237=>'L', -238=>'L', -239=>'L', -240=>'L', -241=>'L', -242=>'L', -243=>'L', -244=>'L', -245=>'L', -246=>'L', -247=>'ON', -248=>'L', -249=>'L', -250=>'L', -251=>'L', -252=>'L', -253=>'L', -254=>'L', -255=>'L', -256=>'L', -257=>'L', -258=>'L', -259=>'L', -260=>'L', -261=>'L', -262=>'L', -263=>'L', -264=>'L', -265=>'L', -266=>'L', -267=>'L', -268=>'L', -269=>'L', -270=>'L', -271=>'L', -272=>'L', -273=>'L', -274=>'L', -275=>'L', -276=>'L', -277=>'L', -278=>'L', -279=>'L', -280=>'L', -281=>'L', -282=>'L', -283=>'L', -284=>'L', -285=>'L', -286=>'L', -287=>'L', -288=>'L', -289=>'L', -290=>'L', -291=>'L', -292=>'L', -293=>'L', -294=>'L', -295=>'L', -296=>'L', -297=>'L', -298=>'L', -299=>'L', -300=>'L', -301=>'L', -302=>'L', -303=>'L', -304=>'L', -305=>'L', -306=>'L', -307=>'L', -308=>'L', -309=>'L', -310=>'L', -311=>'L', -312=>'L', -313=>'L', -314=>'L', -315=>'L', -316=>'L', -317=>'L', -318=>'L', -319=>'L', -320=>'L', -321=>'L', -322=>'L', -323=>'L', -324=>'L', -325=>'L', -326=>'L', -327=>'L', -328=>'L', -329=>'L', -330=>'L', -331=>'L', -332=>'L', -333=>'L', -334=>'L', -335=>'L', -336=>'L', -337=>'L', -338=>'L', -339=>'L', -340=>'L', -341=>'L', -342=>'L', -343=>'L', -344=>'L', -345=>'L', -346=>'L', -347=>'L', -348=>'L', -349=>'L', -350=>'L', -351=>'L', -352=>'L', -353=>'L', -354=>'L', -355=>'L', -356=>'L', -357=>'L', -358=>'L', -359=>'L', -360=>'L', -361=>'L', -362=>'L', -363=>'L', -364=>'L', -365=>'L', -366=>'L', -367=>'L', -368=>'L', -369=>'L', -370=>'L', -371=>'L', -372=>'L', -373=>'L', -374=>'L', -375=>'L', -376=>'L', -377=>'L', -378=>'L', -379=>'L', -380=>'L', -381=>'L', -382=>'L', -383=>'L', -384=>'L', -385=>'L', -386=>'L', -387=>'L', -388=>'L', -389=>'L', -390=>'L', -391=>'L', -392=>'L', -393=>'L', -394=>'L', -395=>'L', -396=>'L', -397=>'L', -398=>'L', -399=>'L', -400=>'L', -401=>'L', -402=>'L', -403=>'L', -404=>'L', -405=>'L', -406=>'L', -407=>'L', -408=>'L', -409=>'L', -410=>'L', -411=>'L', -412=>'L', -413=>'L', -414=>'L', -415=>'L', -416=>'L', -417=>'L', -418=>'L', -419=>'L', -420=>'L', -421=>'L', -422=>'L', -423=>'L', -424=>'L', -425=>'L', -426=>'L', -427=>'L', -428=>'L', -429=>'L', -430=>'L', -431=>'L', -432=>'L', -433=>'L', -434=>'L', -435=>'L', -436=>'L', -437=>'L', -438=>'L', -439=>'L', -440=>'L', -441=>'L', -442=>'L', -443=>'L', -444=>'L', -445=>'L', -446=>'L', -447=>'L', -448=>'L', -449=>'L', -450=>'L', -451=>'L', -452=>'L', -453=>'L', -454=>'L', -455=>'L', -456=>'L', -457=>'L', -458=>'L', -459=>'L', -460=>'L', -461=>'L', -462=>'L', -463=>'L', -464=>'L', -465=>'L', -466=>'L', -467=>'L', -468=>'L', -469=>'L', -470=>'L', -471=>'L', -472=>'L', -473=>'L', -474=>'L', -475=>'L', -476=>'L', -477=>'L', -478=>'L', -479=>'L', -480=>'L', -481=>'L', -482=>'L', -483=>'L', -484=>'L', -485=>'L', -486=>'L', -487=>'L', -488=>'L', -489=>'L', -490=>'L', -491=>'L', -492=>'L', -493=>'L', -494=>'L', -495=>'L', -496=>'L', -497=>'L', -498=>'L', -499=>'L', -500=>'L', -501=>'L', -502=>'L', -503=>'L', -504=>'L', -505=>'L', -506=>'L', -507=>'L', -508=>'L', -509=>'L', -510=>'L', -511=>'L', -512=>'L', -513=>'L', -514=>'L', -515=>'L', -516=>'L', -517=>'L', -518=>'L', -519=>'L', -520=>'L', -521=>'L', -522=>'L', -523=>'L', -524=>'L', -525=>'L', -526=>'L', -527=>'L', -528=>'L', -529=>'L', -530=>'L', -531=>'L', -532=>'L', -533=>'L', -534=>'L', -535=>'L', -536=>'L', -537=>'L', -538=>'L', -539=>'L', -540=>'L', -541=>'L', -542=>'L', -543=>'L', -544=>'L', -545=>'L', -546=>'L', -547=>'L', -548=>'L', -549=>'L', -550=>'L', -551=>'L', -552=>'L', -553=>'L', -554=>'L', -555=>'L', -556=>'L', -557=>'L', -558=>'L', -559=>'L', -560=>'L', -561=>'L', -562=>'L', -563=>'L', -564=>'L', -565=>'L', -566=>'L', -567=>'L', -568=>'L', -569=>'L', -570=>'L', -571=>'L', -572=>'L', -573=>'L', -574=>'L', -575=>'L', -576=>'L', -577=>'L', -578=>'L', -579=>'L', -580=>'L', -581=>'L', -582=>'L', -583=>'L', -584=>'L', -585=>'L', -586=>'L', -587=>'L', -588=>'L', -589=>'L', -590=>'L', -591=>'L', -592=>'L', -593=>'L', -594=>'L', -595=>'L', -596=>'L', -597=>'L', -598=>'L', -599=>'L', -600=>'L', -601=>'L', -602=>'L', -603=>'L', -604=>'L', -605=>'L', -606=>'L', -607=>'L', -608=>'L', -609=>'L', -610=>'L', -611=>'L', -612=>'L', -613=>'L', -614=>'L', -615=>'L', -616=>'L', -617=>'L', -618=>'L', -619=>'L', -620=>'L', -621=>'L', -622=>'L', -623=>'L', -624=>'L', -625=>'L', -626=>'L', -627=>'L', -628=>'L', -629=>'L', -630=>'L', -631=>'L', -632=>'L', -633=>'L', -634=>'L', -635=>'L', -636=>'L', -637=>'L', -638=>'L', -639=>'L', -640=>'L', -641=>'L', -642=>'L', -643=>'L', -644=>'L', -645=>'L', -646=>'L', -647=>'L', -648=>'L', -649=>'L', -650=>'L', -651=>'L', -652=>'L', -653=>'L', -654=>'L', -655=>'L', -656=>'L', -657=>'L', -658=>'L', -659=>'L', -660=>'L', -661=>'L', -662=>'L', -663=>'L', -664=>'L', -665=>'L', -666=>'L', -667=>'L', -668=>'L', -669=>'L', -670=>'L', -671=>'L', -672=>'L', -673=>'L', -674=>'L', -675=>'L', -676=>'L', -677=>'L', -678=>'L', -679=>'L', -680=>'L', -681=>'L', -682=>'L', -683=>'L', -684=>'L', -685=>'L', -686=>'L', -687=>'L', -688=>'L', -689=>'L', -690=>'L', -691=>'L', -692=>'L', -693=>'L', -694=>'L', -695=>'L', -696=>'L', -697=>'ON', -698=>'ON', -699=>'L', -700=>'L', -701=>'L', -702=>'L', -703=>'L', -704=>'L', -705=>'L', -706=>'ON', -707=>'ON', -708=>'ON', -709=>'ON', -710=>'ON', -711=>'ON', -712=>'ON', -713=>'ON', -714=>'ON', -715=>'ON', -716=>'ON', -717=>'ON', -718=>'ON', -719=>'ON', -720=>'L', -721=>'L', -722=>'ON', -723=>'ON', -724=>'ON', -725=>'ON', -726=>'ON', -727=>'ON', -728=>'ON', -729=>'ON', -730=>'ON', -731=>'ON', -732=>'ON', -733=>'ON', -734=>'ON', -735=>'ON', -736=>'L', -737=>'L', -738=>'L', -739=>'L', -740=>'L', -741=>'ON', -742=>'ON', -743=>'ON', -744=>'ON', -745=>'ON', -746=>'ON', -747=>'ON', -748=>'ON', -749=>'ON', -750=>'L', -751=>'ON', -752=>'ON', -753=>'ON', -754=>'ON', -755=>'ON', -756=>'ON', -757=>'ON', -758=>'ON', -759=>'ON', -760=>'ON', -761=>'ON', -762=>'ON', -763=>'ON', -764=>'ON', -765=>'ON', -766=>'ON', -767=>'ON', -768=>'NSM', -769=>'NSM', -770=>'NSM', -771=>'NSM', -772=>'NSM', -773=>'NSM', -774=>'NSM', -775=>'NSM', -776=>'NSM', -777=>'NSM', -778=>'NSM', -779=>'NSM', -780=>'NSM', -781=>'NSM', -782=>'NSM', -783=>'NSM', -784=>'NSM', -785=>'NSM', -786=>'NSM', -787=>'NSM', -788=>'NSM', -789=>'NSM', -790=>'NSM', -791=>'NSM', -792=>'NSM', -793=>'NSM', -794=>'NSM', -795=>'NSM', -796=>'NSM', -797=>'NSM', -798=>'NSM', -799=>'NSM', -800=>'NSM', -801=>'NSM', -802=>'NSM', -803=>'NSM', -804=>'NSM', -805=>'NSM', -806=>'NSM', -807=>'NSM', -808=>'NSM', -809=>'NSM', -810=>'NSM', -811=>'NSM', -812=>'NSM', -813=>'NSM', -814=>'NSM', -815=>'NSM', -816=>'NSM', -817=>'NSM', -818=>'NSM', -819=>'NSM', -820=>'NSM', -821=>'NSM', -822=>'NSM', -823=>'NSM', -824=>'NSM', -825=>'NSM', -826=>'NSM', -827=>'NSM', -828=>'NSM', -829=>'NSM', -830=>'NSM', -831=>'NSM', -832=>'NSM', -833=>'NSM', -834=>'NSM', -835=>'NSM', -836=>'NSM', -837=>'NSM', -838=>'NSM', -839=>'NSM', -840=>'NSM', -841=>'NSM', -842=>'NSM', -843=>'NSM', -844=>'NSM', -845=>'NSM', -846=>'NSM', -847=>'NSM', -848=>'NSM', -849=>'NSM', -850=>'NSM', -851=>'NSM', -852=>'NSM', -853=>'NSM', -854=>'NSM', -855=>'NSM', -856=>'NSM', -857=>'NSM', -858=>'NSM', -859=>'NSM', -860=>'NSM', -861=>'NSM', -862=>'NSM', -863=>'NSM', -864=>'NSM', -865=>'NSM', -866=>'NSM', -867=>'NSM', -868=>'NSM', -869=>'NSM', -870=>'NSM', -871=>'NSM', -872=>'NSM', -873=>'NSM', -874=>'NSM', -875=>'NSM', -876=>'NSM', -877=>'NSM', -878=>'NSM', -879=>'NSM', -884=>'ON', -885=>'ON', -890=>'L', -891=>'L', -892=>'L', -893=>'L', -894=>'ON', -900=>'ON', -901=>'ON', -902=>'L', -903=>'ON', -904=>'L', -905=>'L', -906=>'L', -908=>'L', -910=>'L', -911=>'L', -912=>'L', -913=>'L', -914=>'L', -915=>'L', -916=>'L', -917=>'L', -918=>'L', -919=>'L', -920=>'L', -921=>'L', -922=>'L', -923=>'L', -924=>'L', -925=>'L', -926=>'L', -927=>'L', -928=>'L', -929=>'L', -931=>'L', -932=>'L', -933=>'L', -934=>'L', -935=>'L', -936=>'L', -937=>'L', -938=>'L', -939=>'L', -940=>'L', -941=>'L', -942=>'L', -943=>'L', -944=>'L', -945=>'L', -946=>'L', -947=>'L', -948=>'L', -949=>'L', -950=>'L', -951=>'L', -952=>'L', -953=>'L', -954=>'L', -955=>'L', -956=>'L', -957=>'L', -958=>'L', -959=>'L', -960=>'L', -961=>'L', -962=>'L', -963=>'L', -964=>'L', -965=>'L', -966=>'L', -967=>'L', -968=>'L', -969=>'L', -970=>'L', -971=>'L', -972=>'L', -973=>'L', -974=>'L', -976=>'L', -977=>'L', -978=>'L', -979=>'L', -980=>'L', -981=>'L', -982=>'L', -983=>'L', -984=>'L', -985=>'L', -986=>'L', -987=>'L', -988=>'L', -989=>'L', -990=>'L', -991=>'L', -992=>'L', -993=>'L', -994=>'L', -995=>'L', -996=>'L', -997=>'L', -998=>'L', -999=>'L', -1000=>'L', -1001=>'L', -1002=>'L', -1003=>'L', -1004=>'L', -1005=>'L', -1006=>'L', -1007=>'L', -1008=>'L', -1009=>'L', -1010=>'L', -1011=>'L', -1012=>'L', -1013=>'L', -1014=>'ON', -1015=>'L', -1016=>'L', -1017=>'L', -1018=>'L', -1019=>'L', -1020=>'L', -1021=>'L', -1022=>'L', -1023=>'L', -1024=>'L', -1025=>'L', -1026=>'L', -1027=>'L', -1028=>'L', -1029=>'L', -1030=>'L', -1031=>'L', -1032=>'L', -1033=>'L', -1034=>'L', -1035=>'L', -1036=>'L', -1037=>'L', -1038=>'L', -1039=>'L', -1040=>'L', -1041=>'L', -1042=>'L', -1043=>'L', -1044=>'L', -1045=>'L', -1046=>'L', -1047=>'L', -1048=>'L', -1049=>'L', -1050=>'L', -1051=>'L', -1052=>'L', -1053=>'L', -1054=>'L', -1055=>'L', -1056=>'L', -1057=>'L', -1058=>'L', -1059=>'L', -1060=>'L', -1061=>'L', -1062=>'L', -1063=>'L', -1064=>'L', -1065=>'L', -1066=>'L', -1067=>'L', -1068=>'L', -1069=>'L', -1070=>'L', -1071=>'L', -1072=>'L', -1073=>'L', -1074=>'L', -1075=>'L', -1076=>'L', -1077=>'L', -1078=>'L', -1079=>'L', -1080=>'L', -1081=>'L', -1082=>'L', -1083=>'L', -1084=>'L', -1085=>'L', -1086=>'L', -1087=>'L', -1088=>'L', -1089=>'L', -1090=>'L', -1091=>'L', -1092=>'L', -1093=>'L', -1094=>'L', -1095=>'L', -1096=>'L', -1097=>'L', -1098=>'L', -1099=>'L', -1100=>'L', -1101=>'L', -1102=>'L', -1103=>'L', -1104=>'L', -1105=>'L', -1106=>'L', -1107=>'L', -1108=>'L', -1109=>'L', -1110=>'L', -1111=>'L', -1112=>'L', -1113=>'L', -1114=>'L', -1115=>'L', -1116=>'L', -1117=>'L', -1118=>'L', -1119=>'L', -1120=>'L', -1121=>'L', -1122=>'L', -1123=>'L', -1124=>'L', -1125=>'L', -1126=>'L', -1127=>'L', -1128=>'L', -1129=>'L', -1130=>'L', -1131=>'L', -1132=>'L', -1133=>'L', -1134=>'L', -1135=>'L', -1136=>'L', -1137=>'L', -1138=>'L', -1139=>'L', -1140=>'L', -1141=>'L', -1142=>'L', -1143=>'L', -1144=>'L', -1145=>'L', -1146=>'L', -1147=>'L', -1148=>'L', -1149=>'L', -1150=>'L', -1151=>'L', -1152=>'L', -1153=>'L', -1154=>'L', -1155=>'NSM', -1156=>'NSM', -1157=>'NSM', -1158=>'NSM', -1160=>'NSM', -1161=>'NSM', -1162=>'L', -1163=>'L', -1164=>'L', -1165=>'L', -1166=>'L', -1167=>'L', -1168=>'L', -1169=>'L', -1170=>'L', -1171=>'L', -1172=>'L', -1173=>'L', -1174=>'L', -1175=>'L', -1176=>'L', -1177=>'L', -1178=>'L', -1179=>'L', -1180=>'L', -1181=>'L', -1182=>'L', -1183=>'L', -1184=>'L', -1185=>'L', -1186=>'L', -1187=>'L', -1188=>'L', -1189=>'L', -1190=>'L', -1191=>'L', -1192=>'L', -1193=>'L', -1194=>'L', -1195=>'L', -1196=>'L', -1197=>'L', -1198=>'L', -1199=>'L', -1200=>'L', -1201=>'L', -1202=>'L', -1203=>'L', -1204=>'L', -1205=>'L', -1206=>'L', -1207=>'L', -1208=>'L', -1209=>'L', -1210=>'L', -1211=>'L', -1212=>'L', -1213=>'L', -1214=>'L', -1215=>'L', -1216=>'L', -1217=>'L', -1218=>'L', -1219=>'L', -1220=>'L', -1221=>'L', -1222=>'L', -1223=>'L', -1224=>'L', -1225=>'L', -1226=>'L', -1227=>'L', -1228=>'L', -1229=>'L', -1230=>'L', -1231=>'L', -1232=>'L', -1233=>'L', -1234=>'L', -1235=>'L', -1236=>'L', -1237=>'L', -1238=>'L', -1239=>'L', -1240=>'L', -1241=>'L', -1242=>'L', -1243=>'L', -1244=>'L', -1245=>'L', -1246=>'L', -1247=>'L', -1248=>'L', -1249=>'L', -1250=>'L', -1251=>'L', -1252=>'L', -1253=>'L', -1254=>'L', -1255=>'L', -1256=>'L', -1257=>'L', -1258=>'L', -1259=>'L', -1260=>'L', -1261=>'L', -1262=>'L', -1263=>'L', -1264=>'L', -1265=>'L', -1266=>'L', -1267=>'L', -1268=>'L', -1269=>'L', -1270=>'L', -1271=>'L', -1272=>'L', -1273=>'L', -1274=>'L', -1275=>'L', -1276=>'L', -1277=>'L', -1278=>'L', -1279=>'L', -1280=>'L', -1281=>'L', -1282=>'L', -1283=>'L', -1284=>'L', -1285=>'L', -1286=>'L', -1287=>'L', -1288=>'L', -1289=>'L', -1290=>'L', -1291=>'L', -1292=>'L', -1293=>'L', -1294=>'L', -1295=>'L', -1296=>'L', -1297=>'L', -1298=>'L', -1299=>'L', -1329=>'L', -1330=>'L', -1331=>'L', -1332=>'L', -1333=>'L', -1334=>'L', -1335=>'L', -1336=>'L', -1337=>'L', -1338=>'L', -1339=>'L', -1340=>'L', -1341=>'L', -1342=>'L', -1343=>'L', -1344=>'L', -1345=>'L', -1346=>'L', -1347=>'L', -1348=>'L', -1349=>'L', -1350=>'L', -1351=>'L', -1352=>'L', -1353=>'L', -1354=>'L', -1355=>'L', -1356=>'L', -1357=>'L', -1358=>'L', -1359=>'L', -1360=>'L', -1361=>'L', -1362=>'L', -1363=>'L', -1364=>'L', -1365=>'L', -1366=>'L', -1369=>'L', -1370=>'L', -1371=>'L', -1372=>'L', -1373=>'L', -1374=>'L', -1375=>'L', -1377=>'L', -1378=>'L', -1379=>'L', -1380=>'L', -1381=>'L', -1382=>'L', -1383=>'L', -1384=>'L', -1385=>'L', -1386=>'L', -1387=>'L', -1388=>'L', -1389=>'L', -1390=>'L', -1391=>'L', -1392=>'L', -1393=>'L', -1394=>'L', -1395=>'L', -1396=>'L', -1397=>'L', -1398=>'L', -1399=>'L', -1400=>'L', -1401=>'L', -1402=>'L', -1403=>'L', -1404=>'L', -1405=>'L', -1406=>'L', -1407=>'L', -1408=>'L', -1409=>'L', -1410=>'L', -1411=>'L', -1412=>'L', -1413=>'L', -1414=>'L', -1415=>'L', -1417=>'L', -1418=>'ON', -1425=>'NSM', -1426=>'NSM', -1427=>'NSM', -1428=>'NSM', -1429=>'NSM', -1430=>'NSM', -1431=>'NSM', -1432=>'NSM', -1433=>'NSM', -1434=>'NSM', -1435=>'NSM', -1436=>'NSM', -1437=>'NSM', -1438=>'NSM', -1439=>'NSM', -1440=>'NSM', -1441=>'NSM', -1442=>'NSM', -1443=>'NSM', -1444=>'NSM', -1445=>'NSM', -1446=>'NSM', -1447=>'NSM', -1448=>'NSM', -1449=>'NSM', -1450=>'NSM', -1451=>'NSM', -1452=>'NSM', -1453=>'NSM', -1454=>'NSM', -1455=>'NSM', -1456=>'NSM', -1457=>'NSM', -1458=>'NSM', -1459=>'NSM', -1460=>'NSM', -1461=>'NSM', -1462=>'NSM', -1463=>'NSM', -1464=>'NSM', -1465=>'NSM', -1466=>'NSM', -1467=>'NSM', -1468=>'NSM', -1469=>'NSM', -1470=>'R', -1471=>'NSM', -1472=>'R', -1473=>'NSM', -1474=>'NSM', -1475=>'R', -1476=>'NSM', -1477=>'NSM', -1478=>'R', -1479=>'NSM', -1488=>'R', -1489=>'R', -1490=>'R', -1491=>'R', -1492=>'R', -1493=>'R', -1494=>'R', -1495=>'R', -1496=>'R', -1497=>'R', -1498=>'R', -1499=>'R', -1500=>'R', -1501=>'R', -1502=>'R', -1503=>'R', -1504=>'R', -1505=>'R', -1506=>'R', -1507=>'R', -1508=>'R', -1509=>'R', -1510=>'R', -1511=>'R', -1512=>'R', -1513=>'R', -1514=>'R', -1520=>'R', -1521=>'R', -1522=>'R', -1523=>'R', -1524=>'R', -1536=>'AL', -1537=>'AL', -1538=>'AL', -1539=>'AL', -1547=>'AL', -1548=>'CS', -1549=>'AL', -1550=>'ON', -1551=>'ON', -1552=>'NSM', -1553=>'NSM', -1554=>'NSM', -1555=>'NSM', -1556=>'NSM', -1557=>'NSM', -1563=>'AL', -1566=>'AL', -1567=>'AL', -1569=>'AL', -1570=>'AL', -1571=>'AL', -1572=>'AL', -1573=>'AL', -1574=>'AL', -1575=>'AL', -1576=>'AL', -1577=>'AL', -1578=>'AL', -1579=>'AL', -1580=>'AL', -1581=>'AL', -1582=>'AL', -1583=>'AL', -1584=>'AL', -1585=>'AL', -1586=>'AL', -1587=>'AL', -1588=>'AL', -1589=>'AL', -1590=>'AL', -1591=>'AL', -1592=>'AL', -1593=>'AL', -1594=>'AL', -1600=>'AL', -1601=>'AL', -1602=>'AL', -1603=>'AL', -1604=>'AL', -1605=>'AL', -1606=>'AL', -1607=>'AL', -1608=>'AL', -1609=>'AL', -1610=>'AL', -1611=>'NSM', -1612=>'NSM', -1613=>'NSM', -1614=>'NSM', -1615=>'NSM', -1616=>'NSM', -1617=>'NSM', -1618=>'NSM', -1619=>'NSM', -1620=>'NSM', -1621=>'NSM', -1622=>'NSM', -1623=>'NSM', -1624=>'NSM', -1625=>'NSM', -1626=>'NSM', -1627=>'NSM', -1628=>'NSM', -1629=>'NSM', -1630=>'NSM', -1632=>'AN', -1633=>'AN', -1634=>'AN', -1635=>'AN', -1636=>'AN', -1637=>'AN', -1638=>'AN', -1639=>'AN', -1640=>'AN', -1641=>'AN', -1642=>'ET', -1643=>'AN', -1644=>'AN', -1645=>'AL', -1646=>'AL', -1647=>'AL', -1648=>'NSM', -1649=>'AL', -1650=>'AL', -1651=>'AL', -1652=>'AL', -1653=>'AL', -1654=>'AL', -1655=>'AL', -1656=>'AL', -1657=>'AL', -1658=>'AL', -1659=>'AL', -1660=>'AL', -1661=>'AL', -1662=>'AL', -1663=>'AL', -1664=>'AL', -1665=>'AL', -1666=>'AL', -1667=>'AL', -1668=>'AL', -1669=>'AL', -1670=>'AL', -1671=>'AL', -1672=>'AL', -1673=>'AL', -1674=>'AL', -1675=>'AL', -1676=>'AL', -1677=>'AL', -1678=>'AL', -1679=>'AL', -1680=>'AL', -1681=>'AL', -1682=>'AL', -1683=>'AL', -1684=>'AL', -1685=>'AL', -1686=>'AL', -1687=>'AL', -1688=>'AL', -1689=>'AL', -1690=>'AL', -1691=>'AL', -1692=>'AL', -1693=>'AL', -1694=>'AL', -1695=>'AL', -1696=>'AL', -1697=>'AL', -1698=>'AL', -1699=>'AL', -1700=>'AL', -1701=>'AL', -1702=>'AL', -1703=>'AL', -1704=>'AL', -1705=>'AL', -1706=>'AL', -1707=>'AL', -1708=>'AL', -1709=>'AL', -1710=>'AL', -1711=>'AL', -1712=>'AL', -1713=>'AL', -1714=>'AL', -1715=>'AL', -1716=>'AL', -1717=>'AL', -1718=>'AL', -1719=>'AL', -1720=>'AL', -1721=>'AL', -1722=>'AL', -1723=>'AL', -1724=>'AL', -1725=>'AL', -1726=>'AL', -1727=>'AL', -1728=>'AL', -1729=>'AL', -1730=>'AL', -1731=>'AL', -1732=>'AL', -1733=>'AL', -1734=>'AL', -1735=>'AL', -1736=>'AL', -1737=>'AL', -1738=>'AL', -1739=>'AL', -1740=>'AL', -1741=>'AL', -1742=>'AL', -1743=>'AL', -1744=>'AL', -1745=>'AL', -1746=>'AL', -1747=>'AL', -1748=>'AL', -1749=>'AL', -1750=>'NSM', -1751=>'NSM', -1752=>'NSM', -1753=>'NSM', -1754=>'NSM', -1755=>'NSM', -1756=>'NSM', -1757=>'AL', -1758=>'NSM', -1759=>'NSM', -1760=>'NSM', -1761=>'NSM', -1762=>'NSM', -1763=>'NSM', -1764=>'NSM', -1765=>'AL', -1766=>'AL', -1767=>'NSM', -1768=>'NSM', -1769=>'ON', -1770=>'NSM', -1771=>'NSM', -1772=>'NSM', -1773=>'NSM', -1774=>'AL', -1775=>'AL', -1776=>'EN', -1777=>'EN', -1778=>'EN', -1779=>'EN', -1780=>'EN', -1781=>'EN', -1782=>'EN', -1783=>'EN', -1784=>'EN', -1785=>'EN', -1786=>'AL', -1787=>'AL', -1788=>'AL', -1789=>'AL', -1790=>'AL', -1791=>'AL', -1792=>'AL', -1793=>'AL', -1794=>'AL', -1795=>'AL', -1796=>'AL', -1797=>'AL', -1798=>'AL', -1799=>'AL', -1800=>'AL', -1801=>'AL', -1802=>'AL', -1803=>'AL', -1804=>'AL', -1805=>'AL', -1807=>'BN', -1808=>'AL', -1809=>'NSM', -1810=>'AL', -1811=>'AL', -1812=>'AL', -1813=>'AL', -1814=>'AL', -1815=>'AL', -1816=>'AL', -1817=>'AL', -1818=>'AL', -1819=>'AL', -1820=>'AL', -1821=>'AL', -1822=>'AL', -1823=>'AL', -1824=>'AL', -1825=>'AL', -1826=>'AL', -1827=>'AL', -1828=>'AL', -1829=>'AL', -1830=>'AL', -1831=>'AL', -1832=>'AL', -1833=>'AL', -1834=>'AL', -1835=>'AL', -1836=>'AL', -1837=>'AL', -1838=>'AL', -1839=>'AL', -1840=>'NSM', -1841=>'NSM', -1842=>'NSM', -1843=>'NSM', -1844=>'NSM', -1845=>'NSM', -1846=>'NSM', -1847=>'NSM', -1848=>'NSM', -1849=>'NSM', -1850=>'NSM', -1851=>'NSM', -1852=>'NSM', -1853=>'NSM', -1854=>'NSM', -1855=>'NSM', -1856=>'NSM', -1857=>'NSM', -1858=>'NSM', -1859=>'NSM', -1860=>'NSM', -1861=>'NSM', -1862=>'NSM', -1863=>'NSM', -1864=>'NSM', -1865=>'NSM', -1866=>'NSM', -1869=>'AL', -1870=>'AL', -1871=>'AL', -1872=>'AL', -1873=>'AL', -1874=>'AL', -1875=>'AL', -1876=>'AL', -1877=>'AL', -1878=>'AL', -1879=>'AL', -1880=>'AL', -1881=>'AL', -1882=>'AL', -1883=>'AL', -1884=>'AL', -1885=>'AL', -1886=>'AL', -1887=>'AL', -1888=>'AL', -1889=>'AL', -1890=>'AL', -1891=>'AL', -1892=>'AL', -1893=>'AL', -1894=>'AL', -1895=>'AL', -1896=>'AL', -1897=>'AL', -1898=>'AL', -1899=>'AL', -1900=>'AL', -1901=>'AL', -1920=>'AL', -1921=>'AL', -1922=>'AL', -1923=>'AL', -1924=>'AL', -1925=>'AL', -1926=>'AL', -1927=>'AL', -1928=>'AL', -1929=>'AL', -1930=>'AL', -1931=>'AL', -1932=>'AL', -1933=>'AL', -1934=>'AL', -1935=>'AL', -1936=>'AL', -1937=>'AL', -1938=>'AL', -1939=>'AL', -1940=>'AL', -1941=>'AL', -1942=>'AL', -1943=>'AL', -1944=>'AL', -1945=>'AL', -1946=>'AL', -1947=>'AL', -1948=>'AL', -1949=>'AL', -1950=>'AL', -1951=>'AL', -1952=>'AL', -1953=>'AL', -1954=>'AL', -1955=>'AL', -1956=>'AL', -1957=>'AL', -1958=>'NSM', -1959=>'NSM', -1960=>'NSM', -1961=>'NSM', -1962=>'NSM', -1963=>'NSM', -1964=>'NSM', -1965=>'NSM', -1966=>'NSM', -1967=>'NSM', -1968=>'NSM', -1969=>'AL', -1984=>'R', -1985=>'R', -1986=>'R', -1987=>'R', -1988=>'R', -1989=>'R', -1990=>'R', -1991=>'R', -1992=>'R', -1993=>'R', -1994=>'R', -1995=>'R', -1996=>'R', -1997=>'R', -1998=>'R', -1999=>'R', -2000=>'R', -2001=>'R', -2002=>'R', -2003=>'R', -2004=>'R', -2005=>'R', -2006=>'R', -2007=>'R', -2008=>'R', -2009=>'R', -2010=>'R', -2011=>'R', -2012=>'R', -2013=>'R', -2014=>'R', -2015=>'R', -2016=>'R', -2017=>'R', -2018=>'R', -2019=>'R', -2020=>'R', -2021=>'R', -2022=>'R', -2023=>'R', -2024=>'R', -2025=>'R', -2026=>'R', -2027=>'NSM', -2028=>'NSM', -2029=>'NSM', -2030=>'NSM', -2031=>'NSM', -2032=>'NSM', -2033=>'NSM', -2034=>'NSM', -2035=>'NSM', -2036=>'R', -2037=>'R', -2038=>'ON', -2039=>'ON', -2040=>'ON', -2041=>'ON', -2042=>'R', -2305=>'NSM', -2306=>'NSM', -2307=>'L', -2308=>'L', -2309=>'L', -2310=>'L', -2311=>'L', -2312=>'L', -2313=>'L', -2314=>'L', -2315=>'L', -2316=>'L', -2317=>'L', -2318=>'L', -2319=>'L', -2320=>'L', -2321=>'L', -2322=>'L', -2323=>'L', -2324=>'L', -2325=>'L', -2326=>'L', -2327=>'L', -2328=>'L', -2329=>'L', -2330=>'L', -2331=>'L', -2332=>'L', -2333=>'L', -2334=>'L', -2335=>'L', -2336=>'L', -2337=>'L', -2338=>'L', -2339=>'L', -2340=>'L', -2341=>'L', -2342=>'L', -2343=>'L', -2344=>'L', -2345=>'L', -2346=>'L', -2347=>'L', -2348=>'L', -2349=>'L', -2350=>'L', -2351=>'L', -2352=>'L', -2353=>'L', -2354=>'L', -2355=>'L', -2356=>'L', -2357=>'L', -2358=>'L', -2359=>'L', -2360=>'L', -2361=>'L', -2364=>'NSM', -2365=>'L', -2366=>'L', -2367=>'L', -2368=>'L', -2369=>'NSM', -2370=>'NSM', -2371=>'NSM', -2372=>'NSM', -2373=>'NSM', -2374=>'NSM', -2375=>'NSM', -2376=>'NSM', -2377=>'L', -2378=>'L', -2379=>'L', -2380=>'L', -2381=>'NSM', -2384=>'L', -2385=>'NSM', -2386=>'NSM', -2387=>'NSM', -2388=>'NSM', -2392=>'L', -2393=>'L', -2394=>'L', -2395=>'L', -2396=>'L', -2397=>'L', -2398=>'L', -2399=>'L', -2400=>'L', -2401=>'L', -2402=>'NSM', -2403=>'NSM', -2404=>'L', -2405=>'L', -2406=>'L', -2407=>'L', -2408=>'L', -2409=>'L', -2410=>'L', -2411=>'L', -2412=>'L', -2413=>'L', -2414=>'L', -2415=>'L', -2416=>'L', -2427=>'L', -2428=>'L', -2429=>'L', -2430=>'L', -2431=>'L', -2433=>'NSM', -2434=>'L', -2435=>'L', -2437=>'L', -2438=>'L', -2439=>'L', -2440=>'L', -2441=>'L', -2442=>'L', -2443=>'L', -2444=>'L', -2447=>'L', -2448=>'L', -2451=>'L', -2452=>'L', -2453=>'L', -2454=>'L', -2455=>'L', -2456=>'L', -2457=>'L', -2458=>'L', -2459=>'L', -2460=>'L', -2461=>'L', -2462=>'L', -2463=>'L', -2464=>'L', -2465=>'L', -2466=>'L', -2467=>'L', -2468=>'L', -2469=>'L', -2470=>'L', -2471=>'L', -2472=>'L', -2474=>'L', -2475=>'L', -2476=>'L', -2477=>'L', -2478=>'L', -2479=>'L', -2480=>'L', -2482=>'L', -2486=>'L', -2487=>'L', -2488=>'L', -2489=>'L', -2492=>'NSM', -2493=>'L', -2494=>'L', -2495=>'L', -2496=>'L', -2497=>'NSM', -2498=>'NSM', -2499=>'NSM', -2500=>'NSM', -2503=>'L', -2504=>'L', -2507=>'L', -2508=>'L', -2509=>'NSM', -2510=>'L', -2519=>'L', -2524=>'L', -2525=>'L', -2527=>'L', -2528=>'L', -2529=>'L', -2530=>'NSM', -2531=>'NSM', -2534=>'L', -2535=>'L', -2536=>'L', -2537=>'L', -2538=>'L', -2539=>'L', -2540=>'L', -2541=>'L', -2542=>'L', -2543=>'L', -2544=>'L', -2545=>'L', -2546=>'ET', -2547=>'ET', -2548=>'L', -2549=>'L', -2550=>'L', -2551=>'L', -2552=>'L', -2553=>'L', -2554=>'L', -2561=>'NSM', -2562=>'NSM', -2563=>'L', -2565=>'L', -2566=>'L', -2567=>'L', -2568=>'L', -2569=>'L', -2570=>'L', -2575=>'L', -2576=>'L', -2579=>'L', -2580=>'L', -2581=>'L', -2582=>'L', -2583=>'L', -2584=>'L', -2585=>'L', -2586=>'L', -2587=>'L', -2588=>'L', -2589=>'L', -2590=>'L', -2591=>'L', -2592=>'L', -2593=>'L', -2594=>'L', -2595=>'L', -2596=>'L', -2597=>'L', -2598=>'L', -2599=>'L', -2600=>'L', -2602=>'L', -2603=>'L', -2604=>'L', -2605=>'L', -2606=>'L', -2607=>'L', -2608=>'L', -2610=>'L', -2611=>'L', -2613=>'L', -2614=>'L', -2616=>'L', -2617=>'L', -2620=>'NSM', -2622=>'L', -2623=>'L', -2624=>'L', -2625=>'NSM', -2626=>'NSM', -2631=>'NSM', -2632=>'NSM', -2635=>'NSM', -2636=>'NSM', -2637=>'NSM', -2649=>'L', -2650=>'L', -2651=>'L', -2652=>'L', -2654=>'L', -2662=>'L', -2663=>'L', -2664=>'L', -2665=>'L', -2666=>'L', -2667=>'L', -2668=>'L', -2669=>'L', -2670=>'L', -2671=>'L', -2672=>'NSM', -2673=>'NSM', -2674=>'L', -2675=>'L', -2676=>'L', -2689=>'NSM', -2690=>'NSM', -2691=>'L', -2693=>'L', -2694=>'L', -2695=>'L', -2696=>'L', -2697=>'L', -2698=>'L', -2699=>'L', -2700=>'L', -2701=>'L', -2703=>'L', -2704=>'L', -2705=>'L', -2707=>'L', -2708=>'L', -2709=>'L', -2710=>'L', -2711=>'L', -2712=>'L', -2713=>'L', -2714=>'L', -2715=>'L', -2716=>'L', -2717=>'L', -2718=>'L', -2719=>'L', -2720=>'L', -2721=>'L', -2722=>'L', -2723=>'L', -2724=>'L', -2725=>'L', -2726=>'L', -2727=>'L', -2728=>'L', -2730=>'L', -2731=>'L', -2732=>'L', -2733=>'L', -2734=>'L', -2735=>'L', -2736=>'L', -2738=>'L', -2739=>'L', -2741=>'L', -2742=>'L', -2743=>'L', -2744=>'L', -2745=>'L', -2748=>'NSM', -2749=>'L', -2750=>'L', -2751=>'L', -2752=>'L', -2753=>'NSM', -2754=>'NSM', -2755=>'NSM', -2756=>'NSM', -2757=>'NSM', -2759=>'NSM', -2760=>'NSM', -2761=>'L', -2763=>'L', -2764=>'L', -2765=>'NSM', -2768=>'L', -2784=>'L', -2785=>'L', -2786=>'NSM', -2787=>'NSM', -2790=>'L', -2791=>'L', -2792=>'L', -2793=>'L', -2794=>'L', -2795=>'L', -2796=>'L', -2797=>'L', -2798=>'L', -2799=>'L', -2801=>'ET', -2817=>'NSM', -2818=>'L', -2819=>'L', -2821=>'L', -2822=>'L', -2823=>'L', -2824=>'L', -2825=>'L', -2826=>'L', -2827=>'L', -2828=>'L', -2831=>'L', -2832=>'L', -2835=>'L', -2836=>'L', -2837=>'L', -2838=>'L', -2839=>'L', -2840=>'L', -2841=>'L', -2842=>'L', -2843=>'L', -2844=>'L', -2845=>'L', -2846=>'L', -2847=>'L', -2848=>'L', -2849=>'L', -2850=>'L', -2851=>'L', -2852=>'L', -2853=>'L', -2854=>'L', -2855=>'L', -2856=>'L', -2858=>'L', -2859=>'L', -2860=>'L', -2861=>'L', -2862=>'L', -2863=>'L', -2864=>'L', -2866=>'L', -2867=>'L', -2869=>'L', -2870=>'L', -2871=>'L', -2872=>'L', -2873=>'L', -2876=>'NSM', -2877=>'L', -2878=>'L', -2879=>'NSM', -2880=>'L', -2881=>'NSM', -2882=>'NSM', -2883=>'NSM', -2887=>'L', -2888=>'L', -2891=>'L', -2892=>'L', -2893=>'NSM', -2902=>'NSM', -2903=>'L', -2908=>'L', -2909=>'L', -2911=>'L', -2912=>'L', -2913=>'L', -2918=>'L', -2919=>'L', -2920=>'L', -2921=>'L', -2922=>'L', -2923=>'L', -2924=>'L', -2925=>'L', -2926=>'L', -2927=>'L', -2928=>'L', -2929=>'L', -2946=>'NSM', -2947=>'L', -2949=>'L', -2950=>'L', -2951=>'L', -2952=>'L', -2953=>'L', -2954=>'L', -2958=>'L', -2959=>'L', -2960=>'L', -2962=>'L', -2963=>'L', -2964=>'L', -2965=>'L', -2969=>'L', -2970=>'L', -2972=>'L', -2974=>'L', -2975=>'L', -2979=>'L', -2980=>'L', -2984=>'L', -2985=>'L', -2986=>'L', -2990=>'L', -2991=>'L', -2992=>'L', -2993=>'L', -2994=>'L', -2995=>'L', -2996=>'L', -2997=>'L', -2998=>'L', -2999=>'L', -3000=>'L', -3001=>'L', -3006=>'L', -3007=>'L', -3008=>'NSM', -3009=>'L', -3010=>'L', -3014=>'L', -3015=>'L', -3016=>'L', -3018=>'L', -3019=>'L', -3020=>'L', -3021=>'NSM', -3031=>'L', -3046=>'L', -3047=>'L', -3048=>'L', -3049=>'L', -3050=>'L', -3051=>'L', -3052=>'L', -3053=>'L', -3054=>'L', -3055=>'L', -3056=>'L', -3057=>'L', -3058=>'L', -3059=>'ON', -3060=>'ON', -3061=>'ON', -3062=>'ON', -3063=>'ON', -3064=>'ON', -3065=>'ET', -3066=>'ON', -3073=>'L', -3074=>'L', -3075=>'L', -3077=>'L', -3078=>'L', -3079=>'L', -3080=>'L', -3081=>'L', -3082=>'L', -3083=>'L', -3084=>'L', -3086=>'L', -3087=>'L', -3088=>'L', -3090=>'L', -3091=>'L', -3092=>'L', -3093=>'L', -3094=>'L', -3095=>'L', -3096=>'L', -3097=>'L', -3098=>'L', -3099=>'L', -3100=>'L', -3101=>'L', -3102=>'L', -3103=>'L', -3104=>'L', -3105=>'L', -3106=>'L', -3107=>'L', -3108=>'L', -3109=>'L', -3110=>'L', -3111=>'L', -3112=>'L', -3114=>'L', -3115=>'L', -3116=>'L', -3117=>'L', -3118=>'L', -3119=>'L', -3120=>'L', -3121=>'L', -3122=>'L', -3123=>'L', -3125=>'L', -3126=>'L', -3127=>'L', -3128=>'L', -3129=>'L', -3134=>'NSM', -3135=>'NSM', -3136=>'NSM', -3137=>'L', -3138=>'L', -3139=>'L', -3140=>'L', -3142=>'NSM', -3143=>'NSM', -3144=>'NSM', -3146=>'NSM', -3147=>'NSM', -3148=>'NSM', -3149=>'NSM', -3157=>'NSM', -3158=>'NSM', -3168=>'L', -3169=>'L', -3174=>'L', -3175=>'L', -3176=>'L', -3177=>'L', -3178=>'L', -3179=>'L', -3180=>'L', -3181=>'L', -3182=>'L', -3183=>'L', -3202=>'L', -3203=>'L', -3205=>'L', -3206=>'L', -3207=>'L', -3208=>'L', -3209=>'L', -3210=>'L', -3211=>'L', -3212=>'L', -3214=>'L', -3215=>'L', -3216=>'L', -3218=>'L', -3219=>'L', -3220=>'L', -3221=>'L', -3222=>'L', -3223=>'L', -3224=>'L', -3225=>'L', -3226=>'L', -3227=>'L', -3228=>'L', -3229=>'L', -3230=>'L', -3231=>'L', -3232=>'L', -3233=>'L', -3234=>'L', -3235=>'L', -3236=>'L', -3237=>'L', -3238=>'L', -3239=>'L', -3240=>'L', -3242=>'L', -3243=>'L', -3244=>'L', -3245=>'L', -3246=>'L', -3247=>'L', -3248=>'L', -3249=>'L', -3250=>'L', -3251=>'L', -3253=>'L', -3254=>'L', -3255=>'L', -3256=>'L', -3257=>'L', -3260=>'NSM', -3261=>'L', -3262=>'L', -3263=>'L', -3264=>'L', -3265=>'L', -3266=>'L', -3267=>'L', -3268=>'L', -3270=>'L', -3271=>'L', -3272=>'L', -3274=>'L', -3275=>'L', -3276=>'NSM', -3277=>'NSM', -3285=>'L', -3286=>'L', -3294=>'L', -3296=>'L', -3297=>'L', -3298=>'NSM', -3299=>'NSM', -3302=>'L', -3303=>'L', -3304=>'L', -3305=>'L', -3306=>'L', -3307=>'L', -3308=>'L', -3309=>'L', -3310=>'L', -3311=>'L', -3313=>'ON', -3314=>'ON', -3330=>'L', -3331=>'L', -3333=>'L', -3334=>'L', -3335=>'L', -3336=>'L', -3337=>'L', -3338=>'L', -3339=>'L', -3340=>'L', -3342=>'L', -3343=>'L', -3344=>'L', -3346=>'L', -3347=>'L', -3348=>'L', -3349=>'L', -3350=>'L', -3351=>'L', -3352=>'L', -3353=>'L', -3354=>'L', -3355=>'L', -3356=>'L', -3357=>'L', -3358=>'L', -3359=>'L', -3360=>'L', -3361=>'L', -3362=>'L', -3363=>'L', -3364=>'L', -3365=>'L', -3366=>'L', -3367=>'L', -3368=>'L', -3370=>'L', -3371=>'L', -3372=>'L', -3373=>'L', -3374=>'L', -3375=>'L', -3376=>'L', -3377=>'L', -3378=>'L', -3379=>'L', -3380=>'L', -3381=>'L', -3382=>'L', -3383=>'L', -3384=>'L', -3385=>'L', -3390=>'L', -3391=>'L', -3392=>'L', -3393=>'NSM', -3394=>'NSM', -3395=>'NSM', -3398=>'L', -3399=>'L', -3400=>'L', -3402=>'L', -3403=>'L', -3404=>'L', -3405=>'NSM', -3415=>'L', -3424=>'L', -3425=>'L', -3430=>'L', -3431=>'L', -3432=>'L', -3433=>'L', -3434=>'L', -3435=>'L', -3436=>'L', -3437=>'L', -3438=>'L', -3439=>'L', -3458=>'L', -3459=>'L', -3461=>'L', -3462=>'L', -3463=>'L', -3464=>'L', -3465=>'L', -3466=>'L', -3467=>'L', -3468=>'L', -3469=>'L', -3470=>'L', -3471=>'L', -3472=>'L', -3473=>'L', -3474=>'L', -3475=>'L', -3476=>'L', -3477=>'L', -3478=>'L', -3482=>'L', -3483=>'L', -3484=>'L', -3485=>'L', -3486=>'L', -3487=>'L', -3488=>'L', -3489=>'L', -3490=>'L', -3491=>'L', -3492=>'L', -3493=>'L', -3494=>'L', -3495=>'L', -3496=>'L', -3497=>'L', -3498=>'L', -3499=>'L', -3500=>'L', -3501=>'L', -3502=>'L', -3503=>'L', -3504=>'L', -3505=>'L', -3507=>'L', -3508=>'L', -3509=>'L', -3510=>'L', -3511=>'L', -3512=>'L', -3513=>'L', -3514=>'L', -3515=>'L', -3517=>'L', -3520=>'L', -3521=>'L', -3522=>'L', -3523=>'L', -3524=>'L', -3525=>'L', -3526=>'L', -3530=>'NSM', -3535=>'L', -3536=>'L', -3537=>'L', -3538=>'NSM', -3539=>'NSM', -3540=>'NSM', -3542=>'NSM', -3544=>'L', -3545=>'L', -3546=>'L', -3547=>'L', -3548=>'L', -3549=>'L', -3550=>'L', -3551=>'L', -3570=>'L', -3571=>'L', -3572=>'L', -3585=>'L', -3586=>'L', -3587=>'L', -3588=>'L', -3589=>'L', -3590=>'L', -3591=>'L', -3592=>'L', -3593=>'L', -3594=>'L', -3595=>'L', -3596=>'L', -3597=>'L', -3598=>'L', -3599=>'L', -3600=>'L', -3601=>'L', -3602=>'L', -3603=>'L', -3604=>'L', -3605=>'L', -3606=>'L', -3607=>'L', -3608=>'L', -3609=>'L', -3610=>'L', -3611=>'L', -3612=>'L', -3613=>'L', -3614=>'L', -3615=>'L', -3616=>'L', -3617=>'L', -3618=>'L', -3619=>'L', -3620=>'L', -3621=>'L', -3622=>'L', -3623=>'L', -3624=>'L', -3625=>'L', -3626=>'L', -3627=>'L', -3628=>'L', -3629=>'L', -3630=>'L', -3631=>'L', -3632=>'L', -3633=>'NSM', -3634=>'L', -3635=>'L', -3636=>'NSM', -3637=>'NSM', -3638=>'NSM', -3639=>'NSM', -3640=>'NSM', -3641=>'NSM', -3642=>'NSM', -3647=>'ET', -3648=>'L', -3649=>'L', -3650=>'L', -3651=>'L', -3652=>'L', -3653=>'L', -3654=>'L', -3655=>'NSM', -3656=>'NSM', -3657=>'NSM', -3658=>'NSM', -3659=>'NSM', -3660=>'NSM', -3661=>'NSM', -3662=>'NSM', -3663=>'L', -3664=>'L', -3665=>'L', -3666=>'L', -3667=>'L', -3668=>'L', -3669=>'L', -3670=>'L', -3671=>'L', -3672=>'L', -3673=>'L', -3674=>'L', -3675=>'L', -3713=>'L', -3714=>'L', -3716=>'L', -3719=>'L', -3720=>'L', -3722=>'L', -3725=>'L', -3732=>'L', -3733=>'L', -3734=>'L', -3735=>'L', -3737=>'L', -3738=>'L', -3739=>'L', -3740=>'L', -3741=>'L', -3742=>'L', -3743=>'L', -3745=>'L', -3746=>'L', -3747=>'L', -3749=>'L', -3751=>'L', -3754=>'L', -3755=>'L', -3757=>'L', -3758=>'L', -3759=>'L', -3760=>'L', -3761=>'NSM', -3762=>'L', -3763=>'L', -3764=>'NSM', -3765=>'NSM', -3766=>'NSM', -3767=>'NSM', -3768=>'NSM', -3769=>'NSM', -3771=>'NSM', -3772=>'NSM', -3773=>'L', -3776=>'L', -3777=>'L', -3778=>'L', -3779=>'L', -3780=>'L', -3782=>'L', -3784=>'NSM', -3785=>'NSM', -3786=>'NSM', -3787=>'NSM', -3788=>'NSM', -3789=>'NSM', -3792=>'L', -3793=>'L', -3794=>'L', -3795=>'L', -3796=>'L', -3797=>'L', -3798=>'L', -3799=>'L', -3800=>'L', -3801=>'L', -3804=>'L', -3805=>'L', -3840=>'L', -3841=>'L', -3842=>'L', -3843=>'L', -3844=>'L', -3845=>'L', -3846=>'L', -3847=>'L', -3848=>'L', -3849=>'L', -3850=>'L', -3851=>'L', -3852=>'L', -3853=>'L', -3854=>'L', -3855=>'L', -3856=>'L', -3857=>'L', -3858=>'L', -3859=>'L', -3860=>'L', -3861=>'L', -3862=>'L', -3863=>'L', -3864=>'NSM', -3865=>'NSM', -3866=>'L', -3867=>'L', -3868=>'L', -3869=>'L', -3870=>'L', -3871=>'L', -3872=>'L', -3873=>'L', -3874=>'L', -3875=>'L', -3876=>'L', -3877=>'L', -3878=>'L', -3879=>'L', -3880=>'L', -3881=>'L', -3882=>'L', -3883=>'L', -3884=>'L', -3885=>'L', -3886=>'L', -3887=>'L', -3888=>'L', -3889=>'L', -3890=>'L', -3891=>'L', -3892=>'L', -3893=>'NSM', -3894=>'L', -3895=>'NSM', -3896=>'L', -3897=>'NSM', -3898=>'ON', -3899=>'ON', -3900=>'ON', -3901=>'ON', -3902=>'L', -3903=>'L', -3904=>'L', -3905=>'L', -3906=>'L', -3907=>'L', -3908=>'L', -3909=>'L', -3910=>'L', -3911=>'L', -3913=>'L', -3914=>'L', -3915=>'L', -3916=>'L', -3917=>'L', -3918=>'L', -3919=>'L', -3920=>'L', -3921=>'L', -3922=>'L', -3923=>'L', -3924=>'L', -3925=>'L', -3926=>'L', -3927=>'L', -3928=>'L', -3929=>'L', -3930=>'L', -3931=>'L', -3932=>'L', -3933=>'L', -3934=>'L', -3935=>'L', -3936=>'L', -3937=>'L', -3938=>'L', -3939=>'L', -3940=>'L', -3941=>'L', -3942=>'L', -3943=>'L', -3944=>'L', -3945=>'L', -3946=>'L', -3953=>'NSM', -3954=>'NSM', -3955=>'NSM', -3956=>'NSM', -3957=>'NSM', -3958=>'NSM', -3959=>'NSM', -3960=>'NSM', -3961=>'NSM', -3962=>'NSM', -3963=>'NSM', -3964=>'NSM', -3965=>'NSM', -3966=>'NSM', -3967=>'L', -3968=>'NSM', -3969=>'NSM', -3970=>'NSM', -3971=>'NSM', -3972=>'NSM', -3973=>'L', -3974=>'NSM', -3975=>'NSM', -3976=>'L', -3977=>'L', -3978=>'L', -3979=>'L', -3984=>'NSM', -3985=>'NSM', -3986=>'NSM', -3987=>'NSM', -3988=>'NSM', -3989=>'NSM', -3990=>'NSM', -3991=>'NSM', -3993=>'NSM', -3994=>'NSM', -3995=>'NSM', -3996=>'NSM', -3997=>'NSM', -3998=>'NSM', -3999=>'NSM', -4000=>'NSM', -4001=>'NSM', -4002=>'NSM', -4003=>'NSM', -4004=>'NSM', -4005=>'NSM', -4006=>'NSM', -4007=>'NSM', -4008=>'NSM', -4009=>'NSM', -4010=>'NSM', -4011=>'NSM', -4012=>'NSM', -4013=>'NSM', -4014=>'NSM', -4015=>'NSM', -4016=>'NSM', -4017=>'NSM', -4018=>'NSM', -4019=>'NSM', -4020=>'NSM', -4021=>'NSM', -4022=>'NSM', -4023=>'NSM', -4024=>'NSM', -4025=>'NSM', -4026=>'NSM', -4027=>'NSM', -4028=>'NSM', -4030=>'L', -4031=>'L', -4032=>'L', -4033=>'L', -4034=>'L', -4035=>'L', -4036=>'L', -4037=>'L', -4038=>'NSM', -4039=>'L', -4040=>'L', -4041=>'L', -4042=>'L', -4043=>'L', -4044=>'L', -4047=>'L', -4048=>'L', -4049=>'L', -4096=>'L', -4097=>'L', -4098=>'L', -4099=>'L', -4100=>'L', -4101=>'L', -4102=>'L', -4103=>'L', -4104=>'L', -4105=>'L', -4106=>'L', -4107=>'L', -4108=>'L', -4109=>'L', -4110=>'L', -4111=>'L', -4112=>'L', -4113=>'L', -4114=>'L', -4115=>'L', -4116=>'L', -4117=>'L', -4118=>'L', -4119=>'L', -4120=>'L', -4121=>'L', -4122=>'L', -4123=>'L', -4124=>'L', -4125=>'L', -4126=>'L', -4127=>'L', -4128=>'L', -4129=>'L', -4131=>'L', -4132=>'L', -4133=>'L', -4134=>'L', -4135=>'L', -4137=>'L', -4138=>'L', -4140=>'L', -4141=>'NSM', -4142=>'NSM', -4143=>'NSM', -4144=>'NSM', -4145=>'L', -4146=>'NSM', -4150=>'NSM', -4151=>'NSM', -4152=>'L', -4153=>'NSM', -4160=>'L', -4161=>'L', -4162=>'L', -4163=>'L', -4164=>'L', -4165=>'L', -4166=>'L', -4167=>'L', -4168=>'L', -4169=>'L', -4170=>'L', -4171=>'L', -4172=>'L', -4173=>'L', -4174=>'L', -4175=>'L', -4176=>'L', -4177=>'L', -4178=>'L', -4179=>'L', -4180=>'L', -4181=>'L', -4182=>'L', -4183=>'L', -4184=>'NSM', -4185=>'NSM', -4256=>'L', -4257=>'L', -4258=>'L', -4259=>'L', -4260=>'L', -4261=>'L', -4262=>'L', -4263=>'L', -4264=>'L', -4265=>'L', -4266=>'L', -4267=>'L', -4268=>'L', -4269=>'L', -4270=>'L', -4271=>'L', -4272=>'L', -4273=>'L', -4274=>'L', -4275=>'L', -4276=>'L', -4277=>'L', -4278=>'L', -4279=>'L', -4280=>'L', -4281=>'L', -4282=>'L', -4283=>'L', -4284=>'L', -4285=>'L', -4286=>'L', -4287=>'L', -4288=>'L', -4289=>'L', -4290=>'L', -4291=>'L', -4292=>'L', -4293=>'L', -4304=>'L', -4305=>'L', -4306=>'L', -4307=>'L', -4308=>'L', -4309=>'L', -4310=>'L', -4311=>'L', -4312=>'L', -4313=>'L', -4314=>'L', -4315=>'L', -4316=>'L', -4317=>'L', -4318=>'L', -4319=>'L', -4320=>'L', -4321=>'L', -4322=>'L', -4323=>'L', -4324=>'L', -4325=>'L', -4326=>'L', -4327=>'L', -4328=>'L', -4329=>'L', -4330=>'L', -4331=>'L', -4332=>'L', -4333=>'L', -4334=>'L', -4335=>'L', -4336=>'L', -4337=>'L', -4338=>'L', -4339=>'L', -4340=>'L', -4341=>'L', -4342=>'L', -4343=>'L', -4344=>'L', -4345=>'L', -4346=>'L', -4347=>'L', -4348=>'L', -4352=>'L', -4353=>'L', -4354=>'L', -4355=>'L', -4356=>'L', -4357=>'L', -4358=>'L', -4359=>'L', -4360=>'L', -4361=>'L', -4362=>'L', -4363=>'L', -4364=>'L', -4365=>'L', -4366=>'L', -4367=>'L', -4368=>'L', -4369=>'L', -4370=>'L', -4371=>'L', -4372=>'L', -4373=>'L', -4374=>'L', -4375=>'L', -4376=>'L', -4377=>'L', -4378=>'L', -4379=>'L', -4380=>'L', -4381=>'L', -4382=>'L', -4383=>'L', -4384=>'L', -4385=>'L', -4386=>'L', -4387=>'L', -4388=>'L', -4389=>'L', -4390=>'L', -4391=>'L', -4392=>'L', -4393=>'L', -4394=>'L', -4395=>'L', -4396=>'L', -4397=>'L', -4398=>'L', -4399=>'L', -4400=>'L', -4401=>'L', -4402=>'L', -4403=>'L', -4404=>'L', -4405=>'L', -4406=>'L', -4407=>'L', -4408=>'L', -4409=>'L', -4410=>'L', -4411=>'L', -4412=>'L', -4413=>'L', -4414=>'L', -4415=>'L', -4416=>'L', -4417=>'L', -4418=>'L', -4419=>'L', -4420=>'L', -4421=>'L', -4422=>'L', -4423=>'L', -4424=>'L', -4425=>'L', -4426=>'L', -4427=>'L', -4428=>'L', -4429=>'L', -4430=>'L', -4431=>'L', -4432=>'L', -4433=>'L', -4434=>'L', -4435=>'L', -4436=>'L', -4437=>'L', -4438=>'L', -4439=>'L', -4440=>'L', -4441=>'L', -4447=>'L', -4448=>'L', -4449=>'L', -4450=>'L', -4451=>'L', -4452=>'L', -4453=>'L', -4454=>'L', -4455=>'L', -4456=>'L', -4457=>'L', -4458=>'L', -4459=>'L', -4460=>'L', -4461=>'L', -4462=>'L', -4463=>'L', -4464=>'L', -4465=>'L', -4466=>'L', -4467=>'L', -4468=>'L', -4469=>'L', -4470=>'L', -4471=>'L', -4472=>'L', -4473=>'L', -4474=>'L', -4475=>'L', -4476=>'L', -4477=>'L', -4478=>'L', -4479=>'L', -4480=>'L', -4481=>'L', -4482=>'L', -4483=>'L', -4484=>'L', -4485=>'L', -4486=>'L', -4487=>'L', -4488=>'L', -4489=>'L', -4490=>'L', -4491=>'L', -4492=>'L', -4493=>'L', -4494=>'L', -4495=>'L', -4496=>'L', -4497=>'L', -4498=>'L', -4499=>'L', -4500=>'L', -4501=>'L', -4502=>'L', -4503=>'L', -4504=>'L', -4505=>'L', -4506=>'L', -4507=>'L', -4508=>'L', -4509=>'L', -4510=>'L', -4511=>'L', -4512=>'L', -4513=>'L', -4514=>'L', -4520=>'L', -4521=>'L', -4522=>'L', -4523=>'L', -4524=>'L', -4525=>'L', -4526=>'L', -4527=>'L', -4528=>'L', -4529=>'L', -4530=>'L', -4531=>'L', -4532=>'L', -4533=>'L', -4534=>'L', -4535=>'L', -4536=>'L', -4537=>'L', -4538=>'L', -4539=>'L', -4540=>'L', -4541=>'L', -4542=>'L', -4543=>'L', -4544=>'L', -4545=>'L', -4546=>'L', -4547=>'L', -4548=>'L', -4549=>'L', -4550=>'L', -4551=>'L', -4552=>'L', -4553=>'L', -4554=>'L', -4555=>'L', -4556=>'L', -4557=>'L', -4558=>'L', -4559=>'L', -4560=>'L', -4561=>'L', -4562=>'L', -4563=>'L', -4564=>'L', -4565=>'L', -4566=>'L', -4567=>'L', -4568=>'L', -4569=>'L', -4570=>'L', -4571=>'L', -4572=>'L', -4573=>'L', -4574=>'L', -4575=>'L', -4576=>'L', -4577=>'L', -4578=>'L', -4579=>'L', -4580=>'L', -4581=>'L', -4582=>'L', -4583=>'L', -4584=>'L', -4585=>'L', -4586=>'L', -4587=>'L', -4588=>'L', -4589=>'L', -4590=>'L', -4591=>'L', -4592=>'L', -4593=>'L', -4594=>'L', -4595=>'L', -4596=>'L', -4597=>'L', -4598=>'L', -4599=>'L', -4600=>'L', -4601=>'L', -4608=>'L', -4609=>'L', -4610=>'L', -4611=>'L', -4612=>'L', -4613=>'L', -4614=>'L', -4615=>'L', -4616=>'L', -4617=>'L', -4618=>'L', -4619=>'L', -4620=>'L', -4621=>'L', -4622=>'L', -4623=>'L', -4624=>'L', -4625=>'L', -4626=>'L', -4627=>'L', -4628=>'L', -4629=>'L', -4630=>'L', -4631=>'L', -4632=>'L', -4633=>'L', -4634=>'L', -4635=>'L', -4636=>'L', -4637=>'L', -4638=>'L', -4639=>'L', -4640=>'L', -4641=>'L', -4642=>'L', -4643=>'L', -4644=>'L', -4645=>'L', -4646=>'L', -4647=>'L', -4648=>'L', -4649=>'L', -4650=>'L', -4651=>'L', -4652=>'L', -4653=>'L', -4654=>'L', -4655=>'L', -4656=>'L', -4657=>'L', -4658=>'L', -4659=>'L', -4660=>'L', -4661=>'L', -4662=>'L', -4663=>'L', -4664=>'L', -4665=>'L', -4666=>'L', -4667=>'L', -4668=>'L', -4669=>'L', -4670=>'L', -4671=>'L', -4672=>'L', -4673=>'L', -4674=>'L', -4675=>'L', -4676=>'L', -4677=>'L', -4678=>'L', -4679=>'L', -4680=>'L', -4682=>'L', -4683=>'L', -4684=>'L', -4685=>'L', -4688=>'L', -4689=>'L', -4690=>'L', -4691=>'L', -4692=>'L', -4693=>'L', -4694=>'L', -4696=>'L', -4698=>'L', -4699=>'L', -4700=>'L', -4701=>'L', -4704=>'L', -4705=>'L', -4706=>'L', -4707=>'L', -4708=>'L', -4709=>'L', -4710=>'L', -4711=>'L', -4712=>'L', -4713=>'L', -4714=>'L', -4715=>'L', -4716=>'L', -4717=>'L', -4718=>'L', -4719=>'L', -4720=>'L', -4721=>'L', -4722=>'L', -4723=>'L', -4724=>'L', -4725=>'L', -4726=>'L', -4727=>'L', -4728=>'L', -4729=>'L', -4730=>'L', -4731=>'L', -4732=>'L', -4733=>'L', -4734=>'L', -4735=>'L', -4736=>'L', -4737=>'L', -4738=>'L', -4739=>'L', -4740=>'L', -4741=>'L', -4742=>'L', -4743=>'L', -4744=>'L', -4746=>'L', -4747=>'L', -4748=>'L', -4749=>'L', -4752=>'L', -4753=>'L', -4754=>'L', -4755=>'L', -4756=>'L', -4757=>'L', -4758=>'L', -4759=>'L', -4760=>'L', -4761=>'L', -4762=>'L', -4763=>'L', -4764=>'L', -4765=>'L', -4766=>'L', -4767=>'L', -4768=>'L', -4769=>'L', -4770=>'L', -4771=>'L', -4772=>'L', -4773=>'L', -4774=>'L', -4775=>'L', -4776=>'L', -4777=>'L', -4778=>'L', -4779=>'L', -4780=>'L', -4781=>'L', -4782=>'L', -4783=>'L', -4784=>'L', -4786=>'L', -4787=>'L', -4788=>'L', -4789=>'L', -4792=>'L', -4793=>'L', -4794=>'L', -4795=>'L', -4796=>'L', -4797=>'L', -4798=>'L', -4800=>'L', -4802=>'L', -4803=>'L', -4804=>'L', -4805=>'L', -4808=>'L', -4809=>'L', -4810=>'L', -4811=>'L', -4812=>'L', -4813=>'L', -4814=>'L', -4815=>'L', -4816=>'L', -4817=>'L', -4818=>'L', -4819=>'L', -4820=>'L', -4821=>'L', -4822=>'L', -4824=>'L', -4825=>'L', -4826=>'L', -4827=>'L', -4828=>'L', -4829=>'L', -4830=>'L', -4831=>'L', -4832=>'L', -4833=>'L', -4834=>'L', -4835=>'L', -4836=>'L', -4837=>'L', -4838=>'L', -4839=>'L', -4840=>'L', -4841=>'L', -4842=>'L', -4843=>'L', -4844=>'L', -4845=>'L', -4846=>'L', -4847=>'L', -4848=>'L', -4849=>'L', -4850=>'L', -4851=>'L', -4852=>'L', -4853=>'L', -4854=>'L', -4855=>'L', -4856=>'L', -4857=>'L', -4858=>'L', -4859=>'L', -4860=>'L', -4861=>'L', -4862=>'L', -4863=>'L', -4864=>'L', -4865=>'L', -4866=>'L', -4867=>'L', -4868=>'L', -4869=>'L', -4870=>'L', -4871=>'L', -4872=>'L', -4873=>'L', -4874=>'L', -4875=>'L', -4876=>'L', -4877=>'L', -4878=>'L', -4879=>'L', -4880=>'L', -4882=>'L', -4883=>'L', -4884=>'L', -4885=>'L', -4888=>'L', -4889=>'L', -4890=>'L', -4891=>'L', -4892=>'L', -4893=>'L', -4894=>'L', -4895=>'L', -4896=>'L', -4897=>'L', -4898=>'L', -4899=>'L', -4900=>'L', -4901=>'L', -4902=>'L', -4903=>'L', -4904=>'L', -4905=>'L', -4906=>'L', -4907=>'L', -4908=>'L', -4909=>'L', -4910=>'L', -4911=>'L', -4912=>'L', -4913=>'L', -4914=>'L', -4915=>'L', -4916=>'L', -4917=>'L', -4918=>'L', -4919=>'L', -4920=>'L', -4921=>'L', -4922=>'L', -4923=>'L', -4924=>'L', -4925=>'L', -4926=>'L', -4927=>'L', -4928=>'L', -4929=>'L', -4930=>'L', -4931=>'L', -4932=>'L', -4933=>'L', -4934=>'L', -4935=>'L', -4936=>'L', -4937=>'L', -4938=>'L', -4939=>'L', -4940=>'L', -4941=>'L', -4942=>'L', -4943=>'L', -4944=>'L', -4945=>'L', -4946=>'L', -4947=>'L', -4948=>'L', -4949=>'L', -4950=>'L', -4951=>'L', -4952=>'L', -4953=>'L', -4954=>'L', -4959=>'NSM', -4960=>'L', -4961=>'L', -4962=>'L', -4963=>'L', -4964=>'L', -4965=>'L', -4966=>'L', -4967=>'L', -4968=>'L', -4969=>'L', -4970=>'L', -4971=>'L', -4972=>'L', -4973=>'L', -4974=>'L', -4975=>'L', -4976=>'L', -4977=>'L', -4978=>'L', -4979=>'L', -4980=>'L', -4981=>'L', -4982=>'L', -4983=>'L', -4984=>'L', -4985=>'L', -4986=>'L', -4987=>'L', -4988=>'L', -4992=>'L', -4993=>'L', -4994=>'L', -4995=>'L', -4996=>'L', -4997=>'L', -4998=>'L', -4999=>'L', -5000=>'L', -5001=>'L', -5002=>'L', -5003=>'L', -5004=>'L', -5005=>'L', -5006=>'L', -5007=>'L', -5008=>'ON', -5009=>'ON', -5010=>'ON', -5011=>'ON', -5012=>'ON', -5013=>'ON', -5014=>'ON', -5015=>'ON', -5016=>'ON', -5017=>'ON', -5024=>'L', -5025=>'L', -5026=>'L', -5027=>'L', -5028=>'L', -5029=>'L', -5030=>'L', -5031=>'L', -5032=>'L', -5033=>'L', -5034=>'L', -5035=>'L', -5036=>'L', -5037=>'L', -5038=>'L', -5039=>'L', -5040=>'L', -5041=>'L', -5042=>'L', -5043=>'L', -5044=>'L', -5045=>'L', -5046=>'L', -5047=>'L', -5048=>'L', -5049=>'L', -5050=>'L', -5051=>'L', -5052=>'L', -5053=>'L', -5054=>'L', -5055=>'L', -5056=>'L', -5057=>'L', -5058=>'L', -5059=>'L', -5060=>'L', -5061=>'L', -5062=>'L', -5063=>'L', -5064=>'L', -5065=>'L', -5066=>'L', -5067=>'L', -5068=>'L', -5069=>'L', -5070=>'L', -5071=>'L', -5072=>'L', -5073=>'L', -5074=>'L', -5075=>'L', -5076=>'L', -5077=>'L', -5078=>'L', -5079=>'L', -5080=>'L', -5081=>'L', -5082=>'L', -5083=>'L', -5084=>'L', -5085=>'L', -5086=>'L', -5087=>'L', -5088=>'L', -5089=>'L', -5090=>'L', -5091=>'L', -5092=>'L', -5093=>'L', -5094=>'L', -5095=>'L', -5096=>'L', -5097=>'L', -5098=>'L', -5099=>'L', -5100=>'L', -5101=>'L', -5102=>'L', -5103=>'L', -5104=>'L', -5105=>'L', -5106=>'L', -5107=>'L', -5108=>'L', -5121=>'L', -5122=>'L', -5123=>'L', -5124=>'L', -5125=>'L', -5126=>'L', -5127=>'L', -5128=>'L', -5129=>'L', -5130=>'L', -5131=>'L', -5132=>'L', -5133=>'L', -5134=>'L', -5135=>'L', -5136=>'L', -5137=>'L', -5138=>'L', -5139=>'L', -5140=>'L', -5141=>'L', -5142=>'L', -5143=>'L', -5144=>'L', -5145=>'L', -5146=>'L', -5147=>'L', -5148=>'L', -5149=>'L', -5150=>'L', -5151=>'L', -5152=>'L', -5153=>'L', -5154=>'L', -5155=>'L', -5156=>'L', -5157=>'L', -5158=>'L', -5159=>'L', -5160=>'L', -5161=>'L', -5162=>'L', -5163=>'L', -5164=>'L', -5165=>'L', -5166=>'L', -5167=>'L', -5168=>'L', -5169=>'L', -5170=>'L', -5171=>'L', -5172=>'L', -5173=>'L', -5174=>'L', -5175=>'L', -5176=>'L', -5177=>'L', -5178=>'L', -5179=>'L', -5180=>'L', -5181=>'L', -5182=>'L', -5183=>'L', -5184=>'L', -5185=>'L', -5186=>'L', -5187=>'L', -5188=>'L', -5189=>'L', -5190=>'L', -5191=>'L', -5192=>'L', -5193=>'L', -5194=>'L', -5195=>'L', -5196=>'L', -5197=>'L', -5198=>'L', -5199=>'L', -5200=>'L', -5201=>'L', -5202=>'L', -5203=>'L', -5204=>'L', -5205=>'L', -5206=>'L', -5207=>'L', -5208=>'L', -5209=>'L', -5210=>'L', -5211=>'L', -5212=>'L', -5213=>'L', -5214=>'L', -5215=>'L', -5216=>'L', -5217=>'L', -5218=>'L', -5219=>'L', -5220=>'L', -5221=>'L', -5222=>'L', -5223=>'L', -5224=>'L', -5225=>'L', -5226=>'L', -5227=>'L', -5228=>'L', -5229=>'L', -5230=>'L', -5231=>'L', -5232=>'L', -5233=>'L', -5234=>'L', -5235=>'L', -5236=>'L', -5237=>'L', -5238=>'L', -5239=>'L', -5240=>'L', -5241=>'L', -5242=>'L', -5243=>'L', -5244=>'L', -5245=>'L', -5246=>'L', -5247=>'L', -5248=>'L', -5249=>'L', -5250=>'L', -5251=>'L', -5252=>'L', -5253=>'L', -5254=>'L', -5255=>'L', -5256=>'L', -5257=>'L', -5258=>'L', -5259=>'L', -5260=>'L', -5261=>'L', -5262=>'L', -5263=>'L', -5264=>'L', -5265=>'L', -5266=>'L', -5267=>'L', -5268=>'L', -5269=>'L', -5270=>'L', -5271=>'L', -5272=>'L', -5273=>'L', -5274=>'L', -5275=>'L', -5276=>'L', -5277=>'L', -5278=>'L', -5279=>'L', -5280=>'L', -5281=>'L', -5282=>'L', -5283=>'L', -5284=>'L', -5285=>'L', -5286=>'L', -5287=>'L', -5288=>'L', -5289=>'L', -5290=>'L', -5291=>'L', -5292=>'L', -5293=>'L', -5294=>'L', -5295=>'L', -5296=>'L', -5297=>'L', -5298=>'L', -5299=>'L', -5300=>'L', -5301=>'L', -5302=>'L', -5303=>'L', -5304=>'L', -5305=>'L', -5306=>'L', -5307=>'L', -5308=>'L', -5309=>'L', -5310=>'L', -5311=>'L', -5312=>'L', -5313=>'L', -5314=>'L', -5315=>'L', -5316=>'L', -5317=>'L', -5318=>'L', -5319=>'L', -5320=>'L', -5321=>'L', -5322=>'L', -5323=>'L', -5324=>'L', -5325=>'L', -5326=>'L', -5327=>'L', -5328=>'L', -5329=>'L', -5330=>'L', -5331=>'L', -5332=>'L', -5333=>'L', -5334=>'L', -5335=>'L', -5336=>'L', -5337=>'L', -5338=>'L', -5339=>'L', -5340=>'L', -5341=>'L', -5342=>'L', -5343=>'L', -5344=>'L', -5345=>'L', -5346=>'L', -5347=>'L', -5348=>'L', -5349=>'L', -5350=>'L', -5351=>'L', -5352=>'L', -5353=>'L', -5354=>'L', -5355=>'L', -5356=>'L', -5357=>'L', -5358=>'L', -5359=>'L', -5360=>'L', -5361=>'L', -5362=>'L', -5363=>'L', -5364=>'L', -5365=>'L', -5366=>'L', -5367=>'L', -5368=>'L', -5369=>'L', -5370=>'L', -5371=>'L', -5372=>'L', -5373=>'L', -5374=>'L', -5375=>'L', -5376=>'L', -5377=>'L', -5378=>'L', -5379=>'L', -5380=>'L', -5381=>'L', -5382=>'L', -5383=>'L', -5384=>'L', -5385=>'L', -5386=>'L', -5387=>'L', -5388=>'L', -5389=>'L', -5390=>'L', -5391=>'L', -5392=>'L', -5393=>'L', -5394=>'L', -5395=>'L', -5396=>'L', -5397=>'L', -5398=>'L', -5399=>'L', -5400=>'L', -5401=>'L', -5402=>'L', -5403=>'L', -5404=>'L', -5405=>'L', -5406=>'L', -5407=>'L', -5408=>'L', -5409=>'L', -5410=>'L', -5411=>'L', -5412=>'L', -5413=>'L', -5414=>'L', -5415=>'L', -5416=>'L', -5417=>'L', -5418=>'L', -5419=>'L', -5420=>'L', -5421=>'L', -5422=>'L', -5423=>'L', -5424=>'L', -5425=>'L', -5426=>'L', -5427=>'L', -5428=>'L', -5429=>'L', -5430=>'L', -5431=>'L', -5432=>'L', -5433=>'L', -5434=>'L', -5435=>'L', -5436=>'L', -5437=>'L', -5438=>'L', -5439=>'L', -5440=>'L', -5441=>'L', -5442=>'L', -5443=>'L', -5444=>'L', -5445=>'L', -5446=>'L', -5447=>'L', -5448=>'L', -5449=>'L', -5450=>'L', -5451=>'L', -5452=>'L', -5453=>'L', -5454=>'L', -5455=>'L', -5456=>'L', -5457=>'L', -5458=>'L', -5459=>'L', -5460=>'L', -5461=>'L', -5462=>'L', -5463=>'L', -5464=>'L', -5465=>'L', -5466=>'L', -5467=>'L', -5468=>'L', -5469=>'L', -5470=>'L', -5471=>'L', -5472=>'L', -5473=>'L', -5474=>'L', -5475=>'L', -5476=>'L', -5477=>'L', -5478=>'L', -5479=>'L', -5480=>'L', -5481=>'L', -5482=>'L', -5483=>'L', -5484=>'L', -5485=>'L', -5486=>'L', -5487=>'L', -5488=>'L', -5489=>'L', -5490=>'L', -5491=>'L', -5492=>'L', -5493=>'L', -5494=>'L', -5495=>'L', -5496=>'L', -5497=>'L', -5498=>'L', -5499=>'L', -5500=>'L', -5501=>'L', -5502=>'L', -5503=>'L', -5504=>'L', -5505=>'L', -5506=>'L', -5507=>'L', -5508=>'L', -5509=>'L', -5510=>'L', -5511=>'L', -5512=>'L', -5513=>'L', -5514=>'L', -5515=>'L', -5516=>'L', -5517=>'L', -5518=>'L', -5519=>'L', -5520=>'L', -5521=>'L', -5522=>'L', -5523=>'L', -5524=>'L', -5525=>'L', -5526=>'L', -5527=>'L', -5528=>'L', -5529=>'L', -5530=>'L', -5531=>'L', -5532=>'L', -5533=>'L', -5534=>'L', -5535=>'L', -5536=>'L', -5537=>'L', -5538=>'L', -5539=>'L', -5540=>'L', -5541=>'L', -5542=>'L', -5543=>'L', -5544=>'L', -5545=>'L', -5546=>'L', -5547=>'L', -5548=>'L', -5549=>'L', -5550=>'L', -5551=>'L', -5552=>'L', -5553=>'L', -5554=>'L', -5555=>'L', -5556=>'L', -5557=>'L', -5558=>'L', -5559=>'L', -5560=>'L', -5561=>'L', -5562=>'L', -5563=>'L', -5564=>'L', -5565=>'L', -5566=>'L', -5567=>'L', -5568=>'L', -5569=>'L', -5570=>'L', -5571=>'L', -5572=>'L', -5573=>'L', -5574=>'L', -5575=>'L', -5576=>'L', -5577=>'L', -5578=>'L', -5579=>'L', -5580=>'L', -5581=>'L', -5582=>'L', -5583=>'L', -5584=>'L', -5585=>'L', -5586=>'L', -5587=>'L', -5588=>'L', -5589=>'L', -5590=>'L', -5591=>'L', -5592=>'L', -5593=>'L', -5594=>'L', -5595=>'L', -5596=>'L', -5597=>'L', -5598=>'L', -5599=>'L', -5600=>'L', -5601=>'L', -5602=>'L', -5603=>'L', -5604=>'L', -5605=>'L', -5606=>'L', -5607=>'L', -5608=>'L', -5609=>'L', -5610=>'L', -5611=>'L', -5612=>'L', -5613=>'L', -5614=>'L', -5615=>'L', -5616=>'L', -5617=>'L', -5618=>'L', -5619=>'L', -5620=>'L', -5621=>'L', -5622=>'L', -5623=>'L', -5624=>'L', -5625=>'L', -5626=>'L', -5627=>'L', -5628=>'L', -5629=>'L', -5630=>'L', -5631=>'L', -5632=>'L', -5633=>'L', -5634=>'L', -5635=>'L', -5636=>'L', -5637=>'L', -5638=>'L', -5639=>'L', -5640=>'L', -5641=>'L', -5642=>'L', -5643=>'L', -5644=>'L', -5645=>'L', -5646=>'L', -5647=>'L', -5648=>'L', -5649=>'L', -5650=>'L', -5651=>'L', -5652=>'L', -5653=>'L', -5654=>'L', -5655=>'L', -5656=>'L', -5657=>'L', -5658=>'L', -5659=>'L', -5660=>'L', -5661=>'L', -5662=>'L', -5663=>'L', -5664=>'L', -5665=>'L', -5666=>'L', -5667=>'L', -5668=>'L', -5669=>'L', -5670=>'L', -5671=>'L', -5672=>'L', -5673=>'L', -5674=>'L', -5675=>'L', -5676=>'L', -5677=>'L', -5678=>'L', -5679=>'L', -5680=>'L', -5681=>'L', -5682=>'L', -5683=>'L', -5684=>'L', -5685=>'L', -5686=>'L', -5687=>'L', -5688=>'L', -5689=>'L', -5690=>'L', -5691=>'L', -5692=>'L', -5693=>'L', -5694=>'L', -5695=>'L', -5696=>'L', -5697=>'L', -5698=>'L', -5699=>'L', -5700=>'L', -5701=>'L', -5702=>'L', -5703=>'L', -5704=>'L', -5705=>'L', -5706=>'L', -5707=>'L', -5708=>'L', -5709=>'L', -5710=>'L', -5711=>'L', -5712=>'L', -5713=>'L', -5714=>'L', -5715=>'L', -5716=>'L', -5717=>'L', -5718=>'L', -5719=>'L', -5720=>'L', -5721=>'L', -5722=>'L', -5723=>'L', -5724=>'L', -5725=>'L', -5726=>'L', -5727=>'L', -5728=>'L', -5729=>'L', -5730=>'L', -5731=>'L', -5732=>'L', -5733=>'L', -5734=>'L', -5735=>'L', -5736=>'L', -5737=>'L', -5738=>'L', -5739=>'L', -5740=>'L', -5741=>'L', -5742=>'L', -5743=>'L', -5744=>'L', -5745=>'L', -5746=>'L', -5747=>'L', -5748=>'L', -5749=>'L', -5750=>'L', -5760=>'WS', -5761=>'L', -5762=>'L', -5763=>'L', -5764=>'L', -5765=>'L', -5766=>'L', -5767=>'L', -5768=>'L', -5769=>'L', -5770=>'L', -5771=>'L', -5772=>'L', -5773=>'L', -5774=>'L', -5775=>'L', -5776=>'L', -5777=>'L', -5778=>'L', -5779=>'L', -5780=>'L', -5781=>'L', -5782=>'L', -5783=>'L', -5784=>'L', -5785=>'L', -5786=>'L', -5787=>'ON', -5788=>'ON', -5792=>'L', -5793=>'L', -5794=>'L', -5795=>'L', -5796=>'L', -5797=>'L', -5798=>'L', -5799=>'L', -5800=>'L', -5801=>'L', -5802=>'L', -5803=>'L', -5804=>'L', -5805=>'L', -5806=>'L', -5807=>'L', -5808=>'L', -5809=>'L', -5810=>'L', -5811=>'L', -5812=>'L', -5813=>'L', -5814=>'L', -5815=>'L', -5816=>'L', -5817=>'L', -5818=>'L', -5819=>'L', -5820=>'L', -5821=>'L', -5822=>'L', -5823=>'L', -5824=>'L', -5825=>'L', -5826=>'L', -5827=>'L', -5828=>'L', -5829=>'L', -5830=>'L', -5831=>'L', -5832=>'L', -5833=>'L', -5834=>'L', -5835=>'L', -5836=>'L', -5837=>'L', -5838=>'L', -5839=>'L', -5840=>'L', -5841=>'L', -5842=>'L', -5843=>'L', -5844=>'L', -5845=>'L', -5846=>'L', -5847=>'L', -5848=>'L', -5849=>'L', -5850=>'L', -5851=>'L', -5852=>'L', -5853=>'L', -5854=>'L', -5855=>'L', -5856=>'L', -5857=>'L', -5858=>'L', -5859=>'L', -5860=>'L', -5861=>'L', -5862=>'L', -5863=>'L', -5864=>'L', -5865=>'L', -5866=>'L', -5867=>'L', -5868=>'L', -5869=>'L', -5870=>'L', -5871=>'L', -5872=>'L', -5888=>'L', -5889=>'L', -5890=>'L', -5891=>'L', -5892=>'L', -5893=>'L', -5894=>'L', -5895=>'L', -5896=>'L', -5897=>'L', -5898=>'L', -5899=>'L', -5900=>'L', -5902=>'L', -5903=>'L', -5904=>'L', -5905=>'L', -5906=>'NSM', -5907=>'NSM', -5908=>'NSM', -5920=>'L', -5921=>'L', -5922=>'L', -5923=>'L', -5924=>'L', -5925=>'L', -5926=>'L', -5927=>'L', -5928=>'L', -5929=>'L', -5930=>'L', -5931=>'L', -5932=>'L', -5933=>'L', -5934=>'L', -5935=>'L', -5936=>'L', -5937=>'L', -5938=>'NSM', -5939=>'NSM', -5940=>'NSM', -5941=>'L', -5942=>'L', -5952=>'L', -5953=>'L', -5954=>'L', -5955=>'L', -5956=>'L', -5957=>'L', -5958=>'L', -5959=>'L', -5960=>'L', -5961=>'L', -5962=>'L', -5963=>'L', -5964=>'L', -5965=>'L', -5966=>'L', -5967=>'L', -5968=>'L', -5969=>'L', -5970=>'NSM', -5971=>'NSM', -5984=>'L', -5985=>'L', -5986=>'L', -5987=>'L', -5988=>'L', -5989=>'L', -5990=>'L', -5991=>'L', -5992=>'L', -5993=>'L', -5994=>'L', -5995=>'L', -5996=>'L', -5998=>'L', -5999=>'L', -6000=>'L', -6002=>'NSM', -6003=>'NSM', -6016=>'L', -6017=>'L', -6018=>'L', -6019=>'L', -6020=>'L', -6021=>'L', -6022=>'L', -6023=>'L', -6024=>'L', -6025=>'L', -6026=>'L', -6027=>'L', -6028=>'L', -6029=>'L', -6030=>'L', -6031=>'L', -6032=>'L', -6033=>'L', -6034=>'L', -6035=>'L', -6036=>'L', -6037=>'L', -6038=>'L', -6039=>'L', -6040=>'L', -6041=>'L', -6042=>'L', -6043=>'L', -6044=>'L', -6045=>'L', -6046=>'L', -6047=>'L', -6048=>'L', -6049=>'L', -6050=>'L', -6051=>'L', -6052=>'L', -6053=>'L', -6054=>'L', -6055=>'L', -6056=>'L', -6057=>'L', -6058=>'L', -6059=>'L', -6060=>'L', -6061=>'L', -6062=>'L', -6063=>'L', -6064=>'L', -6065=>'L', -6066=>'L', -6067=>'L', -6068=>'L', -6069=>'L', -6070=>'L', -6071=>'NSM', -6072=>'NSM', -6073=>'NSM', -6074=>'NSM', -6075=>'NSM', -6076=>'NSM', -6077=>'NSM', -6078=>'L', -6079=>'L', -6080=>'L', -6081=>'L', -6082=>'L', -6083=>'L', -6084=>'L', -6085=>'L', -6086=>'NSM', -6087=>'L', -6088=>'L', -6089=>'NSM', -6090=>'NSM', -6091=>'NSM', -6092=>'NSM', -6093=>'NSM', -6094=>'NSM', -6095=>'NSM', -6096=>'NSM', -6097=>'NSM', -6098=>'NSM', -6099=>'NSM', -6100=>'L', -6101=>'L', -6102=>'L', -6103=>'L', -6104=>'L', -6105=>'L', -6106=>'L', -6107=>'ET', -6108=>'L', -6109=>'NSM', -6112=>'L', -6113=>'L', -6114=>'L', -6115=>'L', -6116=>'L', -6117=>'L', -6118=>'L', -6119=>'L', -6120=>'L', -6121=>'L', -6128=>'ON', -6129=>'ON', -6130=>'ON', -6131=>'ON', -6132=>'ON', -6133=>'ON', -6134=>'ON', -6135=>'ON', -6136=>'ON', -6137=>'ON', -6144=>'ON', -6145=>'ON', -6146=>'ON', -6147=>'ON', -6148=>'ON', -6149=>'ON', -6150=>'ON', -6151=>'ON', -6152=>'ON', -6153=>'ON', -6154=>'ON', -6155=>'NSM', -6156=>'NSM', -6157=>'NSM', -6158=>'WS', -6160=>'L', -6161=>'L', -6162=>'L', -6163=>'L', -6164=>'L', -6165=>'L', -6166=>'L', -6167=>'L', -6168=>'L', -6169=>'L', -6176=>'L', -6177=>'L', -6178=>'L', -6179=>'L', -6180=>'L', -6181=>'L', -6182=>'L', -6183=>'L', -6184=>'L', -6185=>'L', -6186=>'L', -6187=>'L', -6188=>'L', -6189=>'L', -6190=>'L', -6191=>'L', -6192=>'L', -6193=>'L', -6194=>'L', -6195=>'L', -6196=>'L', -6197=>'L', -6198=>'L', -6199=>'L', -6200=>'L', -6201=>'L', -6202=>'L', -6203=>'L', -6204=>'L', -6205=>'L', -6206=>'L', -6207=>'L', -6208=>'L', -6209=>'L', -6210=>'L', -6211=>'L', -6212=>'L', -6213=>'L', -6214=>'L', -6215=>'L', -6216=>'L', -6217=>'L', -6218=>'L', -6219=>'L', -6220=>'L', -6221=>'L', -6222=>'L', -6223=>'L', -6224=>'L', -6225=>'L', -6226=>'L', -6227=>'L', -6228=>'L', -6229=>'L', -6230=>'L', -6231=>'L', -6232=>'L', -6233=>'L', -6234=>'L', -6235=>'L', -6236=>'L', -6237=>'L', -6238=>'L', -6239=>'L', -6240=>'L', -6241=>'L', -6242=>'L', -6243=>'L', -6244=>'L', -6245=>'L', -6246=>'L', -6247=>'L', -6248=>'L', -6249=>'L', -6250=>'L', -6251=>'L', -6252=>'L', -6253=>'L', -6254=>'L', -6255=>'L', -6256=>'L', -6257=>'L', -6258=>'L', -6259=>'L', -6260=>'L', -6261=>'L', -6262=>'L', -6263=>'L', -6272=>'L', -6273=>'L', -6274=>'L', -6275=>'L', -6276=>'L', -6277=>'L', -6278=>'L', -6279=>'L', -6280=>'L', -6281=>'L', -6282=>'L', -6283=>'L', -6284=>'L', -6285=>'L', -6286=>'L', -6287=>'L', -6288=>'L', -6289=>'L', -6290=>'L', -6291=>'L', -6292=>'L', -6293=>'L', -6294=>'L', -6295=>'L', -6296=>'L', -6297=>'L', -6298=>'L', -6299=>'L', -6300=>'L', -6301=>'L', -6302=>'L', -6303=>'L', -6304=>'L', -6305=>'L', -6306=>'L', -6307=>'L', -6308=>'L', -6309=>'L', -6310=>'L', -6311=>'L', -6312=>'L', -6313=>'NSM', -6400=>'L', -6401=>'L', -6402=>'L', -6403=>'L', -6404=>'L', -6405=>'L', -6406=>'L', -6407=>'L', -6408=>'L', -6409=>'L', -6410=>'L', -6411=>'L', -6412=>'L', -6413=>'L', -6414=>'L', -6415=>'L', -6416=>'L', -6417=>'L', -6418=>'L', -6419=>'L', -6420=>'L', -6421=>'L', -6422=>'L', -6423=>'L', -6424=>'L', -6425=>'L', -6426=>'L', -6427=>'L', -6428=>'L', -6432=>'NSM', -6433=>'NSM', -6434=>'NSM', -6435=>'L', -6436=>'L', -6437=>'L', -6438=>'L', -6439=>'NSM', -6440=>'NSM', -6441=>'NSM', -6442=>'NSM', -6443=>'NSM', -6448=>'L', -6449=>'L', -6450=>'NSM', -6451=>'L', -6452=>'L', -6453=>'L', -6454=>'L', -6455=>'L', -6456=>'L', -6457=>'NSM', -6458=>'NSM', -6459=>'NSM', -6464=>'ON', -6468=>'ON', -6469=>'ON', -6470=>'L', -6471=>'L', -6472=>'L', -6473=>'L', -6474=>'L', -6475=>'L', -6476=>'L', -6477=>'L', -6478=>'L', -6479=>'L', -6480=>'L', -6481=>'L', -6482=>'L', -6483=>'L', -6484=>'L', -6485=>'L', -6486=>'L', -6487=>'L', -6488=>'L', -6489=>'L', -6490=>'L', -6491=>'L', -6492=>'L', -6493=>'L', -6494=>'L', -6495=>'L', -6496=>'L', -6497=>'L', -6498=>'L', -6499=>'L', -6500=>'L', -6501=>'L', -6502=>'L', -6503=>'L', -6504=>'L', -6505=>'L', -6506=>'L', -6507=>'L', -6508=>'L', -6509=>'L', -6512=>'L', -6513=>'L', -6514=>'L', -6515=>'L', -6516=>'L', -6528=>'L', -6529=>'L', -6530=>'L', -6531=>'L', -6532=>'L', -6533=>'L', -6534=>'L', -6535=>'L', -6536=>'L', -6537=>'L', -6538=>'L', -6539=>'L', -6540=>'L', -6541=>'L', -6542=>'L', -6543=>'L', -6544=>'L', -6545=>'L', -6546=>'L', -6547=>'L', -6548=>'L', -6549=>'L', -6550=>'L', -6551=>'L', -6552=>'L', -6553=>'L', -6554=>'L', -6555=>'L', -6556=>'L', -6557=>'L', -6558=>'L', -6559=>'L', -6560=>'L', -6561=>'L', -6562=>'L', -6563=>'L', -6564=>'L', -6565=>'L', -6566=>'L', -6567=>'L', -6568=>'L', -6569=>'L', -6576=>'L', -6577=>'L', -6578=>'L', -6579=>'L', -6580=>'L', -6581=>'L', -6582=>'L', -6583=>'L', -6584=>'L', -6585=>'L', -6586=>'L', -6587=>'L', -6588=>'L', -6589=>'L', -6590=>'L', -6591=>'L', -6592=>'L', -6593=>'L', -6594=>'L', -6595=>'L', -6596=>'L', -6597=>'L', -6598=>'L', -6599=>'L', -6600=>'L', -6601=>'L', -6608=>'L', -6609=>'L', -6610=>'L', -6611=>'L', -6612=>'L', -6613=>'L', -6614=>'L', -6615=>'L', -6616=>'L', -6617=>'L', -6622=>'ON', -6623=>'ON', -6624=>'ON', -6625=>'ON', -6626=>'ON', -6627=>'ON', -6628=>'ON', -6629=>'ON', -6630=>'ON', -6631=>'ON', -6632=>'ON', -6633=>'ON', -6634=>'ON', -6635=>'ON', -6636=>'ON', -6637=>'ON', -6638=>'ON', -6639=>'ON', -6640=>'ON', -6641=>'ON', -6642=>'ON', -6643=>'ON', -6644=>'ON', -6645=>'ON', -6646=>'ON', -6647=>'ON', -6648=>'ON', -6649=>'ON', -6650=>'ON', -6651=>'ON', -6652=>'ON', -6653=>'ON', -6654=>'ON', -6655=>'ON', -6656=>'L', -6657=>'L', -6658=>'L', -6659=>'L', -6660=>'L', -6661=>'L', -6662=>'L', -6663=>'L', -6664=>'L', -6665=>'L', -6666=>'L', -6667=>'L', -6668=>'L', -6669=>'L', -6670=>'L', -6671=>'L', -6672=>'L', -6673=>'L', -6674=>'L', -6675=>'L', -6676=>'L', -6677=>'L', -6678=>'L', -6679=>'NSM', -6680=>'NSM', -6681=>'L', -6682=>'L', -6683=>'L', -6686=>'L', -6687=>'L', -6912=>'NSM', -6913=>'NSM', -6914=>'NSM', -6915=>'NSM', -6916=>'L', -6917=>'L', -6918=>'L', -6919=>'L', -6920=>'L', -6921=>'L', -6922=>'L', -6923=>'L', -6924=>'L', -6925=>'L', -6926=>'L', -6927=>'L', -6928=>'L', -6929=>'L', -6930=>'L', -6931=>'L', -6932=>'L', -6933=>'L', -6934=>'L', -6935=>'L', -6936=>'L', -6937=>'L', -6938=>'L', -6939=>'L', -6940=>'L', -6941=>'L', -6942=>'L', -6943=>'L', -6944=>'L', -6945=>'L', -6946=>'L', -6947=>'L', -6948=>'L', -6949=>'L', -6950=>'L', -6951=>'L', -6952=>'L', -6953=>'L', -6954=>'L', -6955=>'L', -6956=>'L', -6957=>'L', -6958=>'L', -6959=>'L', -6960=>'L', -6961=>'L', -6962=>'L', -6963=>'L', -6964=>'NSM', -6965=>'L', -6966=>'NSM', -6967=>'NSM', -6968=>'NSM', -6969=>'NSM', -6970=>'NSM', -6971=>'L', -6972=>'NSM', -6973=>'L', -6974=>'L', -6975=>'L', -6976=>'L', -6977=>'L', -6978=>'NSM', -6979=>'L', -6980=>'L', -6981=>'L', -6982=>'L', -6983=>'L', -6984=>'L', -6985=>'L', -6986=>'L', -6987=>'L', -6992=>'L', -6993=>'L', -6994=>'L', -6995=>'L', -6996=>'L', -6997=>'L', -6998=>'L', -6999=>'L', -7000=>'L', -7001=>'L', -7002=>'L', -7003=>'L', -7004=>'L', -7005=>'L', -7006=>'L', -7007=>'L', -7008=>'L', -7009=>'L', -7010=>'L', -7011=>'L', -7012=>'L', -7013=>'L', -7014=>'L', -7015=>'L', -7016=>'L', -7017=>'L', -7018=>'L', -7019=>'NSM', -7020=>'NSM', -7021=>'NSM', -7022=>'NSM', -7023=>'NSM', -7024=>'NSM', -7025=>'NSM', -7026=>'NSM', -7027=>'NSM', -7028=>'L', -7029=>'L', -7030=>'L', -7031=>'L', -7032=>'L', -7033=>'L', -7034=>'L', -7035=>'L', -7036=>'L', -7424=>'L', -7425=>'L', -7426=>'L', -7427=>'L', -7428=>'L', -7429=>'L', -7430=>'L', -7431=>'L', -7432=>'L', -7433=>'L', -7434=>'L', -7435=>'L', -7436=>'L', -7437=>'L', -7438=>'L', -7439=>'L', -7440=>'L', -7441=>'L', -7442=>'L', -7443=>'L', -7444=>'L', -7445=>'L', -7446=>'L', -7447=>'L', -7448=>'L', -7449=>'L', -7450=>'L', -7451=>'L', -7452=>'L', -7453=>'L', -7454=>'L', -7455=>'L', -7456=>'L', -7457=>'L', -7458=>'L', -7459=>'L', -7460=>'L', -7461=>'L', -7462=>'L', -7463=>'L', -7464=>'L', -7465=>'L', -7466=>'L', -7467=>'L', -7468=>'L', -7469=>'L', -7470=>'L', -7471=>'L', -7472=>'L', -7473=>'L', -7474=>'L', -7475=>'L', -7476=>'L', -7477=>'L', -7478=>'L', -7479=>'L', -7480=>'L', -7481=>'L', -7482=>'L', -7483=>'L', -7484=>'L', -7485=>'L', -7486=>'L', -7487=>'L', -7488=>'L', -7489=>'L', -7490=>'L', -7491=>'L', -7492=>'L', -7493=>'L', -7494=>'L', -7495=>'L', -7496=>'L', -7497=>'L', -7498=>'L', -7499=>'L', -7500=>'L', -7501=>'L', -7502=>'L', -7503=>'L', -7504=>'L', -7505=>'L', -7506=>'L', -7507=>'L', -7508=>'L', -7509=>'L', -7510=>'L', -7511=>'L', -7512=>'L', -7513=>'L', -7514=>'L', -7515=>'L', -7516=>'L', -7517=>'L', -7518=>'L', -7519=>'L', -7520=>'L', -7521=>'L', -7522=>'L', -7523=>'L', -7524=>'L', -7525=>'L', -7526=>'L', -7527=>'L', -7528=>'L', -7529=>'L', -7530=>'L', -7531=>'L', -7532=>'L', -7533=>'L', -7534=>'L', -7535=>'L', -7536=>'L', -7537=>'L', -7538=>'L', -7539=>'L', -7540=>'L', -7541=>'L', -7542=>'L', -7543=>'L', -7544=>'L', -7545=>'L', -7546=>'L', -7547=>'L', -7548=>'L', -7549=>'L', -7550=>'L', -7551=>'L', -7552=>'L', -7553=>'L', -7554=>'L', -7555=>'L', -7556=>'L', -7557=>'L', -7558=>'L', -7559=>'L', -7560=>'L', -7561=>'L', -7562=>'L', -7563=>'L', -7564=>'L', -7565=>'L', -7566=>'L', -7567=>'L', -7568=>'L', -7569=>'L', -7570=>'L', -7571=>'L', -7572=>'L', -7573=>'L', -7574=>'L', -7575=>'L', -7576=>'L', -7577=>'L', -7578=>'L', -7579=>'L', -7580=>'L', -7581=>'L', -7582=>'L', -7583=>'L', -7584=>'L', -7585=>'L', -7586=>'L', -7587=>'L', -7588=>'L', -7589=>'L', -7590=>'L', -7591=>'L', -7592=>'L', -7593=>'L', -7594=>'L', -7595=>'L', -7596=>'L', -7597=>'L', -7598=>'L', -7599=>'L', -7600=>'L', -7601=>'L', -7602=>'L', -7603=>'L', -7604=>'L', -7605=>'L', -7606=>'L', -7607=>'L', -7608=>'L', -7609=>'L', -7610=>'L', -7611=>'L', -7612=>'L', -7613=>'L', -7614=>'L', -7615=>'L', -7616=>'NSM', -7617=>'NSM', -7618=>'NSM', -7619=>'NSM', -7620=>'NSM', -7621=>'NSM', -7622=>'NSM', -7623=>'NSM', -7624=>'NSM', -7625=>'NSM', -7626=>'NSM', -7678=>'NSM', -7679=>'NSM', -7680=>'L', -7681=>'L', -7682=>'L', -7683=>'L', -7684=>'L', -7685=>'L', -7686=>'L', -7687=>'L', -7688=>'L', -7689=>'L', -7690=>'L', -7691=>'L', -7692=>'L', -7693=>'L', -7694=>'L', -7695=>'L', -7696=>'L', -7697=>'L', -7698=>'L', -7699=>'L', -7700=>'L', -7701=>'L', -7702=>'L', -7703=>'L', -7704=>'L', -7705=>'L', -7706=>'L', -7707=>'L', -7708=>'L', -7709=>'L', -7710=>'L', -7711=>'L', -7712=>'L', -7713=>'L', -7714=>'L', -7715=>'L', -7716=>'L', -7717=>'L', -7718=>'L', -7719=>'L', -7720=>'L', -7721=>'L', -7722=>'L', -7723=>'L', -7724=>'L', -7725=>'L', -7726=>'L', -7727=>'L', -7728=>'L', -7729=>'L', -7730=>'L', -7731=>'L', -7732=>'L', -7733=>'L', -7734=>'L', -7735=>'L', -7736=>'L', -7737=>'L', -7738=>'L', -7739=>'L', -7740=>'L', -7741=>'L', -7742=>'L', -7743=>'L', -7744=>'L', -7745=>'L', -7746=>'L', -7747=>'L', -7748=>'L', -7749=>'L', -7750=>'L', -7751=>'L', -7752=>'L', -7753=>'L', -7754=>'L', -7755=>'L', -7756=>'L', -7757=>'L', -7758=>'L', -7759=>'L', -7760=>'L', -7761=>'L', -7762=>'L', -7763=>'L', -7764=>'L', -7765=>'L', -7766=>'L', -7767=>'L', -7768=>'L', -7769=>'L', -7770=>'L', -7771=>'L', -7772=>'L', -7773=>'L', -7774=>'L', -7775=>'L', -7776=>'L', -7777=>'L', -7778=>'L', -7779=>'L', -7780=>'L', -7781=>'L', -7782=>'L', -7783=>'L', -7784=>'L', -7785=>'L', -7786=>'L', -7787=>'L', -7788=>'L', -7789=>'L', -7790=>'L', -7791=>'L', -7792=>'L', -7793=>'L', -7794=>'L', -7795=>'L', -7796=>'L', -7797=>'L', -7798=>'L', -7799=>'L', -7800=>'L', -7801=>'L', -7802=>'L', -7803=>'L', -7804=>'L', -7805=>'L', -7806=>'L', -7807=>'L', -7808=>'L', -7809=>'L', -7810=>'L', -7811=>'L', -7812=>'L', -7813=>'L', -7814=>'L', -7815=>'L', -7816=>'L', -7817=>'L', -7818=>'L', -7819=>'L', -7820=>'L', -7821=>'L', -7822=>'L', -7823=>'L', -7824=>'L', -7825=>'L', -7826=>'L', -7827=>'L', -7828=>'L', -7829=>'L', -7830=>'L', -7831=>'L', -7832=>'L', -7833=>'L', -7834=>'L', -7835=>'L', -7840=>'L', -7841=>'L', -7842=>'L', -7843=>'L', -7844=>'L', -7845=>'L', -7846=>'L', -7847=>'L', -7848=>'L', -7849=>'L', -7850=>'L', -7851=>'L', -7852=>'L', -7853=>'L', -7854=>'L', -7855=>'L', -7856=>'L', -7857=>'L', -7858=>'L', -7859=>'L', -7860=>'L', -7861=>'L', -7862=>'L', -7863=>'L', -7864=>'L', -7865=>'L', -7866=>'L', -7867=>'L', -7868=>'L', -7869=>'L', -7870=>'L', -7871=>'L', -7872=>'L', -7873=>'L', -7874=>'L', -7875=>'L', -7876=>'L', -7877=>'L', -7878=>'L', -7879=>'L', -7880=>'L', -7881=>'L', -7882=>'L', -7883=>'L', -7884=>'L', -7885=>'L', -7886=>'L', -7887=>'L', -7888=>'L', -7889=>'L', -7890=>'L', -7891=>'L', -7892=>'L', -7893=>'L', -7894=>'L', -7895=>'L', -7896=>'L', -7897=>'L', -7898=>'L', -7899=>'L', -7900=>'L', -7901=>'L', -7902=>'L', -7903=>'L', -7904=>'L', -7905=>'L', -7906=>'L', -7907=>'L', -7908=>'L', -7909=>'L', -7910=>'L', -7911=>'L', -7912=>'L', -7913=>'L', -7914=>'L', -7915=>'L', -7916=>'L', -7917=>'L', -7918=>'L', -7919=>'L', -7920=>'L', -7921=>'L', -7922=>'L', -7923=>'L', -7924=>'L', -7925=>'L', -7926=>'L', -7927=>'L', -7928=>'L', -7929=>'L', -7936=>'L', -7937=>'L', -7938=>'L', -7939=>'L', -7940=>'L', -7941=>'L', -7942=>'L', -7943=>'L', -7944=>'L', -7945=>'L', -7946=>'L', -7947=>'L', -7948=>'L', -7949=>'L', -7950=>'L', -7951=>'L', -7952=>'L', -7953=>'L', -7954=>'L', -7955=>'L', -7956=>'L', -7957=>'L', -7960=>'L', -7961=>'L', -7962=>'L', -7963=>'L', -7964=>'L', -7965=>'L', -7968=>'L', -7969=>'L', -7970=>'L', -7971=>'L', -7972=>'L', -7973=>'L', -7974=>'L', -7975=>'L', -7976=>'L', -7977=>'L', -7978=>'L', -7979=>'L', -7980=>'L', -7981=>'L', -7982=>'L', -7983=>'L', -7984=>'L', -7985=>'L', -7986=>'L', -7987=>'L', -7988=>'L', -7989=>'L', -7990=>'L', -7991=>'L', -7992=>'L', -7993=>'L', -7994=>'L', -7995=>'L', -7996=>'L', -7997=>'L', -7998=>'L', -7999=>'L', -8000=>'L', -8001=>'L', -8002=>'L', -8003=>'L', -8004=>'L', -8005=>'L', -8008=>'L', -8009=>'L', -8010=>'L', -8011=>'L', -8012=>'L', -8013=>'L', -8016=>'L', -8017=>'L', -8018=>'L', -8019=>'L', -8020=>'L', -8021=>'L', -8022=>'L', -8023=>'L', -8025=>'L', -8027=>'L', -8029=>'L', -8031=>'L', -8032=>'L', -8033=>'L', -8034=>'L', -8035=>'L', -8036=>'L', -8037=>'L', -8038=>'L', -8039=>'L', -8040=>'L', -8041=>'L', -8042=>'L', -8043=>'L', -8044=>'L', -8045=>'L', -8046=>'L', -8047=>'L', -8048=>'L', -8049=>'L', -8050=>'L', -8051=>'L', -8052=>'L', -8053=>'L', -8054=>'L', -8055=>'L', -8056=>'L', -8057=>'L', -8058=>'L', -8059=>'L', -8060=>'L', -8061=>'L', -8064=>'L', -8065=>'L', -8066=>'L', -8067=>'L', -8068=>'L', -8069=>'L', -8070=>'L', -8071=>'L', -8072=>'L', -8073=>'L', -8074=>'L', -8075=>'L', -8076=>'L', -8077=>'L', -8078=>'L', -8079=>'L', -8080=>'L', -8081=>'L', -8082=>'L', -8083=>'L', -8084=>'L', -8085=>'L', -8086=>'L', -8087=>'L', -8088=>'L', -8089=>'L', -8090=>'L', -8091=>'L', -8092=>'L', -8093=>'L', -8094=>'L', -8095=>'L', -8096=>'L', -8097=>'L', -8098=>'L', -8099=>'L', -8100=>'L', -8101=>'L', -8102=>'L', -8103=>'L', -8104=>'L', -8105=>'L', -8106=>'L', -8107=>'L', -8108=>'L', -8109=>'L', -8110=>'L', -8111=>'L', -8112=>'L', -8113=>'L', -8114=>'L', -8115=>'L', -8116=>'L', -8118=>'L', -8119=>'L', -8120=>'L', -8121=>'L', -8122=>'L', -8123=>'L', -8124=>'L', -8125=>'ON', -8126=>'L', -8127=>'ON', -8128=>'ON', -8129=>'ON', -8130=>'L', -8131=>'L', -8132=>'L', -8134=>'L', -8135=>'L', -8136=>'L', -8137=>'L', -8138=>'L', -8139=>'L', -8140=>'L', -8141=>'ON', -8142=>'ON', -8143=>'ON', -8144=>'L', -8145=>'L', -8146=>'L', -8147=>'L', -8150=>'L', -8151=>'L', -8152=>'L', -8153=>'L', -8154=>'L', -8155=>'L', -8157=>'ON', -8158=>'ON', -8159=>'ON', -8160=>'L', -8161=>'L', -8162=>'L', -8163=>'L', -8164=>'L', -8165=>'L', -8166=>'L', -8167=>'L', -8168=>'L', -8169=>'L', -8170=>'L', -8171=>'L', -8172=>'L', -8173=>'ON', -8174=>'ON', -8175=>'ON', -8178=>'L', -8179=>'L', -8180=>'L', -8182=>'L', -8183=>'L', -8184=>'L', -8185=>'L', -8186=>'L', -8187=>'L', -8188=>'L', -8189=>'ON', -8190=>'ON', -8192=>'WS', -8193=>'WS', -8194=>'WS', -8195=>'WS', -8196=>'WS', -8197=>'WS', -8198=>'WS', -8199=>'WS', -8200=>'WS', -8201=>'WS', -8202=>'WS', -8203=>'BN', -8204=>'BN', -8205=>'BN', -8206=>'L', -8207=>'R', -8208=>'ON', -8209=>'ON', -8210=>'ON', -8211=>'ON', -8212=>'ON', -8213=>'ON', -8214=>'ON', -8215=>'ON', -8216=>'ON', -8217=>'ON', -8218=>'ON', -8219=>'ON', -8220=>'ON', -8221=>'ON', -8222=>'ON', -8223=>'ON', -8224=>'ON', -8225=>'ON', -8226=>'ON', -8227=>'ON', -8228=>'ON', -8229=>'ON', -8230=>'ON', -8231=>'ON', -8232=>'WS', -8233=>'B', -8234=>'LRE', -8235=>'RLE', -8236=>'PDF', -8237=>'LRO', -8238=>'RLO', -8239=>'CS', -8240=>'ET', -8241=>'ET', -8242=>'ET', -8243=>'ET', -8244=>'ET', -8245=>'ON', -8246=>'ON', -8247=>'ON', -8248=>'ON', -8249=>'ON', -8250=>'ON', -8251=>'ON', -8252=>'ON', -8253=>'ON', -8254=>'ON', -8255=>'ON', -8256=>'ON', -8257=>'ON', -8258=>'ON', -8259=>'ON', -8260=>'CS', -8261=>'ON', -8262=>'ON', -8263=>'ON', -8264=>'ON', -8265=>'ON', -8266=>'ON', -8267=>'ON', -8268=>'ON', -8269=>'ON', -8270=>'ON', -8271=>'ON', -8272=>'ON', -8273=>'ON', -8274=>'ON', -8275=>'ON', -8276=>'ON', -8277=>'ON', -8278=>'ON', -8279=>'ON', -8280=>'ON', -8281=>'ON', -8282=>'ON', -8283=>'ON', -8284=>'ON', -8285=>'ON', -8286=>'ON', -8287=>'WS', -8288=>'BN', -8289=>'BN', -8290=>'BN', -8291=>'BN', -8298=>'BN', -8299=>'BN', -8300=>'BN', -8301=>'BN', -8302=>'BN', -8303=>'BN', -8304=>'EN', -8305=>'L', -8308=>'EN', -8309=>'EN', -8310=>'EN', -8311=>'EN', -8312=>'EN', -8313=>'EN', -8314=>'ES', -8315=>'ES', -8316=>'ON', -8317=>'ON', -8318=>'ON', -8319=>'L', -8320=>'EN', -8321=>'EN', -8322=>'EN', -8323=>'EN', -8324=>'EN', -8325=>'EN', -8326=>'EN', -8327=>'EN', -8328=>'EN', -8329=>'EN', -8330=>'ES', -8331=>'ES', -8332=>'ON', -8333=>'ON', -8334=>'ON', -8336=>'L', -8337=>'L', -8338=>'L', -8339=>'L', -8340=>'L', -8352=>'ET', -8353=>'ET', -8354=>'ET', -8355=>'ET', -8356=>'ET', -8357=>'ET', -8358=>'ET', -8359=>'ET', -8360=>'ET', -8361=>'ET', -8362=>'ET', -8363=>'ET', -8364=>'ET', -8365=>'ET', -8366=>'ET', -8367=>'ET', -8368=>'ET', -8369=>'ET', -8370=>'ET', -8371=>'ET', -8372=>'ET', -8373=>'ET', -8400=>'NSM', -8401=>'NSM', -8402=>'NSM', -8403=>'NSM', -8404=>'NSM', -8405=>'NSM', -8406=>'NSM', -8407=>'NSM', -8408=>'NSM', -8409=>'NSM', -8410=>'NSM', -8411=>'NSM', -8412=>'NSM', -8413=>'NSM', -8414=>'NSM', -8415=>'NSM', -8416=>'NSM', -8417=>'NSM', -8418=>'NSM', -8419=>'NSM', -8420=>'NSM', -8421=>'NSM', -8422=>'NSM', -8423=>'NSM', -8424=>'NSM', -8425=>'NSM', -8426=>'NSM', -8427=>'NSM', -8428=>'NSM', -8429=>'NSM', -8430=>'NSM', -8431=>'NSM', -8448=>'ON', -8449=>'ON', -8450=>'L', -8451=>'ON', -8452=>'ON', -8453=>'ON', -8454=>'ON', -8455=>'L', -8456=>'ON', -8457=>'ON', -8458=>'L', -8459=>'L', -8460=>'L', -8461=>'L', -8462=>'L', -8463=>'L', -8464=>'L', -8465=>'L', -8466=>'L', -8467=>'L', -8468=>'ON', -8469=>'L', -8470=>'ON', -8471=>'ON', -8472=>'ON', -8473=>'L', -8474=>'L', -8475=>'L', -8476=>'L', -8477=>'L', -8478=>'ON', -8479=>'ON', -8480=>'ON', -8481=>'ON', -8482=>'ON', -8483=>'ON', -8484=>'L', -8485=>'ON', -8486=>'L', -8487=>'ON', -8488=>'L', -8489=>'ON', -8490=>'L', -8491=>'L', -8492=>'L', -8493=>'L', -8494=>'ET', -8495=>'L', -8496=>'L', -8497=>'L', -8498=>'L', -8499=>'L', -8500=>'L', -8501=>'L', -8502=>'L', -8503=>'L', -8504=>'L', -8505=>'L', -8506=>'ON', -8507=>'ON', -8508=>'L', -8509=>'L', -8510=>'L', -8511=>'L', -8512=>'ON', -8513=>'ON', -8514=>'ON', -8515=>'ON', -8516=>'ON', -8517=>'L', -8518=>'L', -8519=>'L', -8520=>'L', -8521=>'L', -8522=>'ON', -8523=>'ON', -8524=>'ON', -8525=>'ON', -8526=>'L', -8531=>'ON', -8532=>'ON', -8533=>'ON', -8534=>'ON', -8535=>'ON', -8536=>'ON', -8537=>'ON', -8538=>'ON', -8539=>'ON', -8540=>'ON', -8541=>'ON', -8542=>'ON', -8543=>'ON', -8544=>'L', -8545=>'L', -8546=>'L', -8547=>'L', -8548=>'L', -8549=>'L', -8550=>'L', -8551=>'L', -8552=>'L', -8553=>'L', -8554=>'L', -8555=>'L', -8556=>'L', -8557=>'L', -8558=>'L', -8559=>'L', -8560=>'L', -8561=>'L', -8562=>'L', -8563=>'L', -8564=>'L', -8565=>'L', -8566=>'L', -8567=>'L', -8568=>'L', -8569=>'L', -8570=>'L', -8571=>'L', -8572=>'L', -8573=>'L', -8574=>'L', -8575=>'L', -8576=>'L', -8577=>'L', -8578=>'L', -8579=>'L', -8580=>'L', -8592=>'ON', -8593=>'ON', -8594=>'ON', -8595=>'ON', -8596=>'ON', -8597=>'ON', -8598=>'ON', -8599=>'ON', -8600=>'ON', -8601=>'ON', -8602=>'ON', -8603=>'ON', -8604=>'ON', -8605=>'ON', -8606=>'ON', -8607=>'ON', -8608=>'ON', -8609=>'ON', -8610=>'ON', -8611=>'ON', -8612=>'ON', -8613=>'ON', -8614=>'ON', -8615=>'ON', -8616=>'ON', -8617=>'ON', -8618=>'ON', -8619=>'ON', -8620=>'ON', -8621=>'ON', -8622=>'ON', -8623=>'ON', -8624=>'ON', -8625=>'ON', -8626=>'ON', -8627=>'ON', -8628=>'ON', -8629=>'ON', -8630=>'ON', -8631=>'ON', -8632=>'ON', -8633=>'ON', -8634=>'ON', -8635=>'ON', -8636=>'ON', -8637=>'ON', -8638=>'ON', -8639=>'ON', -8640=>'ON', -8641=>'ON', -8642=>'ON', -8643=>'ON', -8644=>'ON', -8645=>'ON', -8646=>'ON', -8647=>'ON', -8648=>'ON', -8649=>'ON', -8650=>'ON', -8651=>'ON', -8652=>'ON', -8653=>'ON', -8654=>'ON', -8655=>'ON', -8656=>'ON', -8657=>'ON', -8658=>'ON', -8659=>'ON', -8660=>'ON', -8661=>'ON', -8662=>'ON', -8663=>'ON', -8664=>'ON', -8665=>'ON', -8666=>'ON', -8667=>'ON', -8668=>'ON', -8669=>'ON', -8670=>'ON', -8671=>'ON', -8672=>'ON', -8673=>'ON', -8674=>'ON', -8675=>'ON', -8676=>'ON', -8677=>'ON', -8678=>'ON', -8679=>'ON', -8680=>'ON', -8681=>'ON', -8682=>'ON', -8683=>'ON', -8684=>'ON', -8685=>'ON', -8686=>'ON', -8687=>'ON', -8688=>'ON', -8689=>'ON', -8690=>'ON', -8691=>'ON', -8692=>'ON', -8693=>'ON', -8694=>'ON', -8695=>'ON', -8696=>'ON', -8697=>'ON', -8698=>'ON', -8699=>'ON', -8700=>'ON', -8701=>'ON', -8702=>'ON', -8703=>'ON', -8704=>'ON', -8705=>'ON', -8706=>'ON', -8707=>'ON', -8708=>'ON', -8709=>'ON', -8710=>'ON', -8711=>'ON', -8712=>'ON', -8713=>'ON', -8714=>'ON', -8715=>'ON', -8716=>'ON', -8717=>'ON', -8718=>'ON', -8719=>'ON', -8720=>'ON', -8721=>'ON', -8722=>'ES', -8723=>'ET', -8724=>'ON', -8725=>'ON', -8726=>'ON', -8727=>'ON', -8728=>'ON', -8729=>'ON', -8730=>'ON', -8731=>'ON', -8732=>'ON', -8733=>'ON', -8734=>'ON', -8735=>'ON', -8736=>'ON', -8737=>'ON', -8738=>'ON', -8739=>'ON', -8740=>'ON', -8741=>'ON', -8742=>'ON', -8743=>'ON', -8744=>'ON', -8745=>'ON', -8746=>'ON', -8747=>'ON', -8748=>'ON', -8749=>'ON', -8750=>'ON', -8751=>'ON', -8752=>'ON', -8753=>'ON', -8754=>'ON', -8755=>'ON', -8756=>'ON', -8757=>'ON', -8758=>'ON', -8759=>'ON', -8760=>'ON', -8761=>'ON', -8762=>'ON', -8763=>'ON', -8764=>'ON', -8765=>'ON', -8766=>'ON', -8767=>'ON', -8768=>'ON', -8769=>'ON', -8770=>'ON', -8771=>'ON', -8772=>'ON', -8773=>'ON', -8774=>'ON', -8775=>'ON', -8776=>'ON', -8777=>'ON', -8778=>'ON', -8779=>'ON', -8780=>'ON', -8781=>'ON', -8782=>'ON', -8783=>'ON', -8784=>'ON', -8785=>'ON', -8786=>'ON', -8787=>'ON', -8788=>'ON', -8789=>'ON', -8790=>'ON', -8791=>'ON', -8792=>'ON', -8793=>'ON', -8794=>'ON', -8795=>'ON', -8796=>'ON', -8797=>'ON', -8798=>'ON', -8799=>'ON', -8800=>'ON', -8801=>'ON', -8802=>'ON', -8803=>'ON', -8804=>'ON', -8805=>'ON', -8806=>'ON', -8807=>'ON', -8808=>'ON', -8809=>'ON', -8810=>'ON', -8811=>'ON', -8812=>'ON', -8813=>'ON', -8814=>'ON', -8815=>'ON', -8816=>'ON', -8817=>'ON', -8818=>'ON', -8819=>'ON', -8820=>'ON', -8821=>'ON', -8822=>'ON', -8823=>'ON', -8824=>'ON', -8825=>'ON', -8826=>'ON', -8827=>'ON', -8828=>'ON', -8829=>'ON', -8830=>'ON', -8831=>'ON', -8832=>'ON', -8833=>'ON', -8834=>'ON', -8835=>'ON', -8836=>'ON', -8837=>'ON', -8838=>'ON', -8839=>'ON', -8840=>'ON', -8841=>'ON', -8842=>'ON', -8843=>'ON', -8844=>'ON', -8845=>'ON', -8846=>'ON', -8847=>'ON', -8848=>'ON', -8849=>'ON', -8850=>'ON', -8851=>'ON', -8852=>'ON', -8853=>'ON', -8854=>'ON', -8855=>'ON', -8856=>'ON', -8857=>'ON', -8858=>'ON', -8859=>'ON', -8860=>'ON', -8861=>'ON', -8862=>'ON', -8863=>'ON', -8864=>'ON', -8865=>'ON', -8866=>'ON', -8867=>'ON', -8868=>'ON', -8869=>'ON', -8870=>'ON', -8871=>'ON', -8872=>'ON', -8873=>'ON', -8874=>'ON', -8875=>'ON', -8876=>'ON', -8877=>'ON', -8878=>'ON', -8879=>'ON', -8880=>'ON', -8881=>'ON', -8882=>'ON', -8883=>'ON', -8884=>'ON', -8885=>'ON', -8886=>'ON', -8887=>'ON', -8888=>'ON', -8889=>'ON', -8890=>'ON', -8891=>'ON', -8892=>'ON', -8893=>'ON', -8894=>'ON', -8895=>'ON', -8896=>'ON', -8897=>'ON', -8898=>'ON', -8899=>'ON', -8900=>'ON', -8901=>'ON', -8902=>'ON', -8903=>'ON', -8904=>'ON', -8905=>'ON', -8906=>'ON', -8907=>'ON', -8908=>'ON', -8909=>'ON', -8910=>'ON', -8911=>'ON', -8912=>'ON', -8913=>'ON', -8914=>'ON', -8915=>'ON', -8916=>'ON', -8917=>'ON', -8918=>'ON', -8919=>'ON', -8920=>'ON', -8921=>'ON', -8922=>'ON', -8923=>'ON', -8924=>'ON', -8925=>'ON', -8926=>'ON', -8927=>'ON', -8928=>'ON', -8929=>'ON', -8930=>'ON', -8931=>'ON', -8932=>'ON', -8933=>'ON', -8934=>'ON', -8935=>'ON', -8936=>'ON', -8937=>'ON', -8938=>'ON', -8939=>'ON', -8940=>'ON', -8941=>'ON', -8942=>'ON', -8943=>'ON', -8944=>'ON', -8945=>'ON', -8946=>'ON', -8947=>'ON', -8948=>'ON', -8949=>'ON', -8950=>'ON', -8951=>'ON', -8952=>'ON', -8953=>'ON', -8954=>'ON', -8955=>'ON', -8956=>'ON', -8957=>'ON', -8958=>'ON', -8959=>'ON', -8960=>'ON', -8961=>'ON', -8962=>'ON', -8963=>'ON', -8964=>'ON', -8965=>'ON', -8966=>'ON', -8967=>'ON', -8968=>'ON', -8969=>'ON', -8970=>'ON', -8971=>'ON', -8972=>'ON', -8973=>'ON', -8974=>'ON', -8975=>'ON', -8976=>'ON', -8977=>'ON', -8978=>'ON', -8979=>'ON', -8980=>'ON', -8981=>'ON', -8982=>'ON', -8983=>'ON', -8984=>'ON', -8985=>'ON', -8986=>'ON', -8987=>'ON', -8988=>'ON', -8989=>'ON', -8990=>'ON', -8991=>'ON', -8992=>'ON', -8993=>'ON', -8994=>'ON', -8995=>'ON', -8996=>'ON', -8997=>'ON', -8998=>'ON', -8999=>'ON', -9000=>'ON', -9001=>'ON', -9002=>'ON', -9003=>'ON', -9004=>'ON', -9005=>'ON', -9006=>'ON', -9007=>'ON', -9008=>'ON', -9009=>'ON', -9010=>'ON', -9011=>'ON', -9012=>'ON', -9013=>'ON', -9014=>'L', -9015=>'L', -9016=>'L', -9017=>'L', -9018=>'L', -9019=>'L', -9020=>'L', -9021=>'L', -9022=>'L', -9023=>'L', -9024=>'L', -9025=>'L', -9026=>'L', -9027=>'L', -9028=>'L', -9029=>'L', -9030=>'L', -9031=>'L', -9032=>'L', -9033=>'L', -9034=>'L', -9035=>'L', -9036=>'L', -9037=>'L', -9038=>'L', -9039=>'L', -9040=>'L', -9041=>'L', -9042=>'L', -9043=>'L', -9044=>'L', -9045=>'L', -9046=>'L', -9047=>'L', -9048=>'L', -9049=>'L', -9050=>'L', -9051=>'L', -9052=>'L', -9053=>'L', -9054=>'L', -9055=>'L', -9056=>'L', -9057=>'L', -9058=>'L', -9059=>'L', -9060=>'L', -9061=>'L', -9062=>'L', -9063=>'L', -9064=>'L', -9065=>'L', -9066=>'L', -9067=>'L', -9068=>'L', -9069=>'L', -9070=>'L', -9071=>'L', -9072=>'L', -9073=>'L', -9074=>'L', -9075=>'L', -9076=>'L', -9077=>'L', -9078=>'L', -9079=>'L', -9080=>'L', -9081=>'L', -9082=>'L', -9083=>'ON', -9084=>'ON', -9085=>'ON', -9086=>'ON', -9087=>'ON', -9088=>'ON', -9089=>'ON', -9090=>'ON', -9091=>'ON', -9092=>'ON', -9093=>'ON', -9094=>'ON', -9095=>'ON', -9096=>'ON', -9097=>'ON', -9098=>'ON', -9099=>'ON', -9100=>'ON', -9101=>'ON', -9102=>'ON', -9103=>'ON', -9104=>'ON', -9105=>'ON', -9106=>'ON', -9107=>'ON', -9108=>'ON', -9109=>'L', -9110=>'ON', -9111=>'ON', -9112=>'ON', -9113=>'ON', -9114=>'ON', -9115=>'ON', -9116=>'ON', -9117=>'ON', -9118=>'ON', -9119=>'ON', -9120=>'ON', -9121=>'ON', -9122=>'ON', -9123=>'ON', -9124=>'ON', -9125=>'ON', -9126=>'ON', -9127=>'ON', -9128=>'ON', -9129=>'ON', -9130=>'ON', -9131=>'ON', -9132=>'ON', -9133=>'ON', -9134=>'ON', -9135=>'ON', -9136=>'ON', -9137=>'ON', -9138=>'ON', -9139=>'ON', -9140=>'ON', -9141=>'ON', -9142=>'ON', -9143=>'ON', -9144=>'ON', -9145=>'ON', -9146=>'ON', -9147=>'ON', -9148=>'ON', -9149=>'ON', -9150=>'ON', -9151=>'ON', -9152=>'ON', -9153=>'ON', -9154=>'ON', -9155=>'ON', -9156=>'ON', -9157=>'ON', -9158=>'ON', -9159=>'ON', -9160=>'ON', -9161=>'ON', -9162=>'ON', -9163=>'ON', -9164=>'ON', -9165=>'ON', -9166=>'ON', -9167=>'ON', -9168=>'ON', -9169=>'ON', -9170=>'ON', -9171=>'ON', -9172=>'ON', -9173=>'ON', -9174=>'ON', -9175=>'ON', -9176=>'ON', -9177=>'ON', -9178=>'ON', -9179=>'ON', -9180=>'ON', -9181=>'ON', -9182=>'ON', -9183=>'ON', -9184=>'ON', -9185=>'ON', -9186=>'ON', -9187=>'ON', -9188=>'ON', -9189=>'ON', -9190=>'ON', -9191=>'ON', -9216=>'ON', -9217=>'ON', -9218=>'ON', -9219=>'ON', -9220=>'ON', -9221=>'ON', -9222=>'ON', -9223=>'ON', -9224=>'ON', -9225=>'ON', -9226=>'ON', -9227=>'ON', -9228=>'ON', -9229=>'ON', -9230=>'ON', -9231=>'ON', -9232=>'ON', -9233=>'ON', -9234=>'ON', -9235=>'ON', -9236=>'ON', -9237=>'ON', -9238=>'ON', -9239=>'ON', -9240=>'ON', -9241=>'ON', -9242=>'ON', -9243=>'ON', -9244=>'ON', -9245=>'ON', -9246=>'ON', -9247=>'ON', -9248=>'ON', -9249=>'ON', -9250=>'ON', -9251=>'ON', -9252=>'ON', -9253=>'ON', -9254=>'ON', -9280=>'ON', -9281=>'ON', -9282=>'ON', -9283=>'ON', -9284=>'ON', -9285=>'ON', -9286=>'ON', -9287=>'ON', -9288=>'ON', -9289=>'ON', -9290=>'ON', -9312=>'ON', -9313=>'ON', -9314=>'ON', -9315=>'ON', -9316=>'ON', -9317=>'ON', -9318=>'ON', -9319=>'ON', -9320=>'ON', -9321=>'ON', -9322=>'ON', -9323=>'ON', -9324=>'ON', -9325=>'ON', -9326=>'ON', -9327=>'ON', -9328=>'ON', -9329=>'ON', -9330=>'ON', -9331=>'ON', -9332=>'ON', -9333=>'ON', -9334=>'ON', -9335=>'ON', -9336=>'ON', -9337=>'ON', -9338=>'ON', -9339=>'ON', -9340=>'ON', -9341=>'ON', -9342=>'ON', -9343=>'ON', -9344=>'ON', -9345=>'ON', -9346=>'ON', -9347=>'ON', -9348=>'ON', -9349=>'ON', -9350=>'ON', -9351=>'ON', -9352=>'EN', -9353=>'EN', -9354=>'EN', -9355=>'EN', -9356=>'EN', -9357=>'EN', -9358=>'EN', -9359=>'EN', -9360=>'EN', -9361=>'EN', -9362=>'EN', -9363=>'EN', -9364=>'EN', -9365=>'EN', -9366=>'EN', -9367=>'EN', -9368=>'EN', -9369=>'EN', -9370=>'EN', -9371=>'EN', -9372=>'L', -9373=>'L', -9374=>'L', -9375=>'L', -9376=>'L', -9377=>'L', -9378=>'L', -9379=>'L', -9380=>'L', -9381=>'L', -9382=>'L', -9383=>'L', -9384=>'L', -9385=>'L', -9386=>'L', -9387=>'L', -9388=>'L', -9389=>'L', -9390=>'L', -9391=>'L', -9392=>'L', -9393=>'L', -9394=>'L', -9395=>'L', -9396=>'L', -9397=>'L', -9398=>'L', -9399=>'L', -9400=>'L', -9401=>'L', -9402=>'L', -9403=>'L', -9404=>'L', -9405=>'L', -9406=>'L', -9407=>'L', -9408=>'L', -9409=>'L', -9410=>'L', -9411=>'L', -9412=>'L', -9413=>'L', -9414=>'L', -9415=>'L', -9416=>'L', -9417=>'L', -9418=>'L', -9419=>'L', -9420=>'L', -9421=>'L', -9422=>'L', -9423=>'L', -9424=>'L', -9425=>'L', -9426=>'L', -9427=>'L', -9428=>'L', -9429=>'L', -9430=>'L', -9431=>'L', -9432=>'L', -9433=>'L', -9434=>'L', -9435=>'L', -9436=>'L', -9437=>'L', -9438=>'L', -9439=>'L', -9440=>'L', -9441=>'L', -9442=>'L', -9443=>'L', -9444=>'L', -9445=>'L', -9446=>'L', -9447=>'L', -9448=>'L', -9449=>'L', -9450=>'ON', -9451=>'ON', -9452=>'ON', -9453=>'ON', -9454=>'ON', -9455=>'ON', -9456=>'ON', -9457=>'ON', -9458=>'ON', -9459=>'ON', -9460=>'ON', -9461=>'ON', -9462=>'ON', -9463=>'ON', -9464=>'ON', -9465=>'ON', -9466=>'ON', -9467=>'ON', -9468=>'ON', -9469=>'ON', -9470=>'ON', -9471=>'ON', -9472=>'ON', -9473=>'ON', -9474=>'ON', -9475=>'ON', -9476=>'ON', -9477=>'ON', -9478=>'ON', -9479=>'ON', -9480=>'ON', -9481=>'ON', -9482=>'ON', -9483=>'ON', -9484=>'ON', -9485=>'ON', -9486=>'ON', -9487=>'ON', -9488=>'ON', -9489=>'ON', -9490=>'ON', -9491=>'ON', -9492=>'ON', -9493=>'ON', -9494=>'ON', -9495=>'ON', -9496=>'ON', -9497=>'ON', -9498=>'ON', -9499=>'ON', -9500=>'ON', -9501=>'ON', -9502=>'ON', -9503=>'ON', -9504=>'ON', -9505=>'ON', -9506=>'ON', -9507=>'ON', -9508=>'ON', -9509=>'ON', -9510=>'ON', -9511=>'ON', -9512=>'ON', -9513=>'ON', -9514=>'ON', -9515=>'ON', -9516=>'ON', -9517=>'ON', -9518=>'ON', -9519=>'ON', -9520=>'ON', -9521=>'ON', -9522=>'ON', -9523=>'ON', -9524=>'ON', -9525=>'ON', -9526=>'ON', -9527=>'ON', -9528=>'ON', -9529=>'ON', -9530=>'ON', -9531=>'ON', -9532=>'ON', -9533=>'ON', -9534=>'ON', -9535=>'ON', -9536=>'ON', -9537=>'ON', -9538=>'ON', -9539=>'ON', -9540=>'ON', -9541=>'ON', -9542=>'ON', -9543=>'ON', -9544=>'ON', -9545=>'ON', -9546=>'ON', -9547=>'ON', -9548=>'ON', -9549=>'ON', -9550=>'ON', -9551=>'ON', -9552=>'ON', -9553=>'ON', -9554=>'ON', -9555=>'ON', -9556=>'ON', -9557=>'ON', -9558=>'ON', -9559=>'ON', -9560=>'ON', -9561=>'ON', -9562=>'ON', -9563=>'ON', -9564=>'ON', -9565=>'ON', -9566=>'ON', -9567=>'ON', -9568=>'ON', -9569=>'ON', -9570=>'ON', -9571=>'ON', -9572=>'ON', -9573=>'ON', -9574=>'ON', -9575=>'ON', -9576=>'ON', -9577=>'ON', -9578=>'ON', -9579=>'ON', -9580=>'ON', -9581=>'ON', -9582=>'ON', -9583=>'ON', -9584=>'ON', -9585=>'ON', -9586=>'ON', -9587=>'ON', -9588=>'ON', -9589=>'ON', -9590=>'ON', -9591=>'ON', -9592=>'ON', -9593=>'ON', -9594=>'ON', -9595=>'ON', -9596=>'ON', -9597=>'ON', -9598=>'ON', -9599=>'ON', -9600=>'ON', -9601=>'ON', -9602=>'ON', -9603=>'ON', -9604=>'ON', -9605=>'ON', -9606=>'ON', -9607=>'ON', -9608=>'ON', -9609=>'ON', -9610=>'ON', -9611=>'ON', -9612=>'ON', -9613=>'ON', -9614=>'ON', -9615=>'ON', -9616=>'ON', -9617=>'ON', -9618=>'ON', -9619=>'ON', -9620=>'ON', -9621=>'ON', -9622=>'ON', -9623=>'ON', -9624=>'ON', -9625=>'ON', -9626=>'ON', -9627=>'ON', -9628=>'ON', -9629=>'ON', -9630=>'ON', -9631=>'ON', -9632=>'ON', -9633=>'ON', -9634=>'ON', -9635=>'ON', -9636=>'ON', -9637=>'ON', -9638=>'ON', -9639=>'ON', -9640=>'ON', -9641=>'ON', -9642=>'ON', -9643=>'ON', -9644=>'ON', -9645=>'ON', -9646=>'ON', -9647=>'ON', -9648=>'ON', -9649=>'ON', -9650=>'ON', -9651=>'ON', -9652=>'ON', -9653=>'ON', -9654=>'ON', -9655=>'ON', -9656=>'ON', -9657=>'ON', -9658=>'ON', -9659=>'ON', -9660=>'ON', -9661=>'ON', -9662=>'ON', -9663=>'ON', -9664=>'ON', -9665=>'ON', -9666=>'ON', -9667=>'ON', -9668=>'ON', -9669=>'ON', -9670=>'ON', -9671=>'ON', -9672=>'ON', -9673=>'ON', -9674=>'ON', -9675=>'ON', -9676=>'ON', -9677=>'ON', -9678=>'ON', -9679=>'ON', -9680=>'ON', -9681=>'ON', -9682=>'ON', -9683=>'ON', -9684=>'ON', -9685=>'ON', -9686=>'ON', -9687=>'ON', -9688=>'ON', -9689=>'ON', -9690=>'ON', -9691=>'ON', -9692=>'ON', -9693=>'ON', -9694=>'ON', -9695=>'ON', -9696=>'ON', -9697=>'ON', -9698=>'ON', -9699=>'ON', -9700=>'ON', -9701=>'ON', -9702=>'ON', -9703=>'ON', -9704=>'ON', -9705=>'ON', -9706=>'ON', -9707=>'ON', -9708=>'ON', -9709=>'ON', -9710=>'ON', -9711=>'ON', -9712=>'ON', -9713=>'ON', -9714=>'ON', -9715=>'ON', -9716=>'ON', -9717=>'ON', -9718=>'ON', -9719=>'ON', -9720=>'ON', -9721=>'ON', -9722=>'ON', -9723=>'ON', -9724=>'ON', -9725=>'ON', -9726=>'ON', -9727=>'ON', -9728=>'ON', -9729=>'ON', -9730=>'ON', -9731=>'ON', -9732=>'ON', -9733=>'ON', -9734=>'ON', -9735=>'ON', -9736=>'ON', -9737=>'ON', -9738=>'ON', -9739=>'ON', -9740=>'ON', -9741=>'ON', -9742=>'ON', -9743=>'ON', -9744=>'ON', -9745=>'ON', -9746=>'ON', -9747=>'ON', -9748=>'ON', -9749=>'ON', -9750=>'ON', -9751=>'ON', -9752=>'ON', -9753=>'ON', -9754=>'ON', -9755=>'ON', -9756=>'ON', -9757=>'ON', -9758=>'ON', -9759=>'ON', -9760=>'ON', -9761=>'ON', -9762=>'ON', -9763=>'ON', -9764=>'ON', -9765=>'ON', -9766=>'ON', -9767=>'ON', -9768=>'ON', -9769=>'ON', -9770=>'ON', -9771=>'ON', -9772=>'ON', -9773=>'ON', -9774=>'ON', -9775=>'ON', -9776=>'ON', -9777=>'ON', -9778=>'ON', -9779=>'ON', -9780=>'ON', -9781=>'ON', -9782=>'ON', -9783=>'ON', -9784=>'ON', -9785=>'ON', -9786=>'ON', -9787=>'ON', -9788=>'ON', -9789=>'ON', -9790=>'ON', -9791=>'ON', -9792=>'ON', -9793=>'ON', -9794=>'ON', -9795=>'ON', -9796=>'ON', -9797=>'ON', -9798=>'ON', -9799=>'ON', -9800=>'ON', -9801=>'ON', -9802=>'ON', -9803=>'ON', -9804=>'ON', -9805=>'ON', -9806=>'ON', -9807=>'ON', -9808=>'ON', -9809=>'ON', -9810=>'ON', -9811=>'ON', -9812=>'ON', -9813=>'ON', -9814=>'ON', -9815=>'ON', -9816=>'ON', -9817=>'ON', -9818=>'ON', -9819=>'ON', -9820=>'ON', -9821=>'ON', -9822=>'ON', -9823=>'ON', -9824=>'ON', -9825=>'ON', -9826=>'ON', -9827=>'ON', -9828=>'ON', -9829=>'ON', -9830=>'ON', -9831=>'ON', -9832=>'ON', -9833=>'ON', -9834=>'ON', -9835=>'ON', -9836=>'ON', -9837=>'ON', -9838=>'ON', -9839=>'ON', -9840=>'ON', -9841=>'ON', -9842=>'ON', -9843=>'ON', -9844=>'ON', -9845=>'ON', -9846=>'ON', -9847=>'ON', -9848=>'ON', -9849=>'ON', -9850=>'ON', -9851=>'ON', -9852=>'ON', -9853=>'ON', -9854=>'ON', -9855=>'ON', -9856=>'ON', -9857=>'ON', -9858=>'ON', -9859=>'ON', -9860=>'ON', -9861=>'ON', -9862=>'ON', -9863=>'ON', -9864=>'ON', -9865=>'ON', -9866=>'ON', -9867=>'ON', -9868=>'ON', -9869=>'ON', -9870=>'ON', -9871=>'ON', -9872=>'ON', -9873=>'ON', -9874=>'ON', -9875=>'ON', -9876=>'ON', -9877=>'ON', -9878=>'ON', -9879=>'ON', -9880=>'ON', -9881=>'ON', -9882=>'ON', -9883=>'ON', -9884=>'ON', -9888=>'ON', -9889=>'ON', -9890=>'ON', -9891=>'ON', -9892=>'ON', -9893=>'ON', -9894=>'ON', -9895=>'ON', -9896=>'ON', -9897=>'ON', -9898=>'ON', -9899=>'ON', -9900=>'L', -9901=>'ON', -9902=>'ON', -9903=>'ON', -9904=>'ON', -9905=>'ON', -9906=>'ON', -9985=>'ON', -9986=>'ON', -9987=>'ON', -9988=>'ON', -9990=>'ON', -9991=>'ON', -9992=>'ON', -9993=>'ON', -9996=>'ON', -9997=>'ON', -9998=>'ON', -9999=>'ON', -10000=>'ON', -10001=>'ON', -10002=>'ON', -10003=>'ON', -10004=>'ON', -10005=>'ON', -10006=>'ON', -10007=>'ON', -10008=>'ON', -10009=>'ON', -10010=>'ON', -10011=>'ON', -10012=>'ON', -10013=>'ON', -10014=>'ON', -10015=>'ON', -10016=>'ON', -10017=>'ON', -10018=>'ON', -10019=>'ON', -10020=>'ON', -10021=>'ON', -10022=>'ON', -10023=>'ON', -10025=>'ON', -10026=>'ON', -10027=>'ON', -10028=>'ON', -10029=>'ON', -10030=>'ON', -10031=>'ON', -10032=>'ON', -10033=>'ON', -10034=>'ON', -10035=>'ON', -10036=>'ON', -10037=>'ON', -10038=>'ON', -10039=>'ON', -10040=>'ON', -10041=>'ON', -10042=>'ON', -10043=>'ON', -10044=>'ON', -10045=>'ON', -10046=>'ON', -10047=>'ON', -10048=>'ON', -10049=>'ON', -10050=>'ON', -10051=>'ON', -10052=>'ON', -10053=>'ON', -10054=>'ON', -10055=>'ON', -10056=>'ON', -10057=>'ON', -10058=>'ON', -10059=>'ON', -10061=>'ON', -10063=>'ON', -10064=>'ON', -10065=>'ON', -10066=>'ON', -10070=>'ON', -10072=>'ON', -10073=>'ON', -10074=>'ON', -10075=>'ON', -10076=>'ON', -10077=>'ON', -10078=>'ON', -10081=>'ON', -10082=>'ON', -10083=>'ON', -10084=>'ON', -10085=>'ON', -10086=>'ON', -10087=>'ON', -10088=>'ON', -10089=>'ON', -10090=>'ON', -10091=>'ON', -10092=>'ON', -10093=>'ON', -10094=>'ON', -10095=>'ON', -10096=>'ON', -10097=>'ON', -10098=>'ON', -10099=>'ON', -10100=>'ON', -10101=>'ON', -10102=>'ON', -10103=>'ON', -10104=>'ON', -10105=>'ON', -10106=>'ON', -10107=>'ON', -10108=>'ON', -10109=>'ON', -10110=>'ON', -10111=>'ON', -10112=>'ON', -10113=>'ON', -10114=>'ON', -10115=>'ON', -10116=>'ON', -10117=>'ON', -10118=>'ON', -10119=>'ON', -10120=>'ON', -10121=>'ON', -10122=>'ON', -10123=>'ON', -10124=>'ON', -10125=>'ON', -10126=>'ON', -10127=>'ON', -10128=>'ON', -10129=>'ON', -10130=>'ON', -10131=>'ON', -10132=>'ON', -10136=>'ON', -10137=>'ON', -10138=>'ON', -10139=>'ON', -10140=>'ON', -10141=>'ON', -10142=>'ON', -10143=>'ON', -10144=>'ON', -10145=>'ON', -10146=>'ON', -10147=>'ON', -10148=>'ON', -10149=>'ON', -10150=>'ON', -10151=>'ON', -10152=>'ON', -10153=>'ON', -10154=>'ON', -10155=>'ON', -10156=>'ON', -10157=>'ON', -10158=>'ON', -10159=>'ON', -10161=>'ON', -10162=>'ON', -10163=>'ON', -10164=>'ON', -10165=>'ON', -10166=>'ON', -10167=>'ON', -10168=>'ON', -10169=>'ON', -10170=>'ON', -10171=>'ON', -10172=>'ON', -10173=>'ON', -10174=>'ON', -10176=>'ON', -10177=>'ON', -10178=>'ON', -10179=>'ON', -10180=>'ON', -10181=>'ON', -10182=>'ON', -10183=>'ON', -10184=>'ON', -10185=>'ON', -10186=>'ON', -10192=>'ON', -10193=>'ON', -10194=>'ON', -10195=>'ON', -10196=>'ON', -10197=>'ON', -10198=>'ON', -10199=>'ON', -10200=>'ON', -10201=>'ON', -10202=>'ON', -10203=>'ON', -10204=>'ON', -10205=>'ON', -10206=>'ON', -10207=>'ON', -10208=>'ON', -10209=>'ON', -10210=>'ON', -10211=>'ON', -10212=>'ON', -10213=>'ON', -10214=>'ON', -10215=>'ON', -10216=>'ON', -10217=>'ON', -10218=>'ON', -10219=>'ON', -10224=>'ON', -10225=>'ON', -10226=>'ON', -10227=>'ON', -10228=>'ON', -10229=>'ON', -10230=>'ON', -10231=>'ON', -10232=>'ON', -10233=>'ON', -10234=>'ON', -10235=>'ON', -10236=>'ON', -10237=>'ON', -10238=>'ON', -10239=>'ON', -10240=>'L', -10241=>'L', -10242=>'L', -10243=>'L', -10244=>'L', -10245=>'L', -10246=>'L', -10247=>'L', -10248=>'L', -10249=>'L', -10250=>'L', -10251=>'L', -10252=>'L', -10253=>'L', -10254=>'L', -10255=>'L', -10256=>'L', -10257=>'L', -10258=>'L', -10259=>'L', -10260=>'L', -10261=>'L', -10262=>'L', -10263=>'L', -10264=>'L', -10265=>'L', -10266=>'L', -10267=>'L', -10268=>'L', -10269=>'L', -10270=>'L', -10271=>'L', -10272=>'L', -10273=>'L', -10274=>'L', -10275=>'L', -10276=>'L', -10277=>'L', -10278=>'L', -10279=>'L', -10280=>'L', -10281=>'L', -10282=>'L', -10283=>'L', -10284=>'L', -10285=>'L', -10286=>'L', -10287=>'L', -10288=>'L', -10289=>'L', -10290=>'L', -10291=>'L', -10292=>'L', -10293=>'L', -10294=>'L', -10295=>'L', -10296=>'L', -10297=>'L', -10298=>'L', -10299=>'L', -10300=>'L', -10301=>'L', -10302=>'L', -10303=>'L', -10304=>'L', -10305=>'L', -10306=>'L', -10307=>'L', -10308=>'L', -10309=>'L', -10310=>'L', -10311=>'L', -10312=>'L', -10313=>'L', -10314=>'L', -10315=>'L', -10316=>'L', -10317=>'L', -10318=>'L', -10319=>'L', -10320=>'L', -10321=>'L', -10322=>'L', -10323=>'L', -10324=>'L', -10325=>'L', -10326=>'L', -10327=>'L', -10328=>'L', -10329=>'L', -10330=>'L', -10331=>'L', -10332=>'L', -10333=>'L', -10334=>'L', -10335=>'L', -10336=>'L', -10337=>'L', -10338=>'L', -10339=>'L', -10340=>'L', -10341=>'L', -10342=>'L', -10343=>'L', -10344=>'L', -10345=>'L', -10346=>'L', -10347=>'L', -10348=>'L', -10349=>'L', -10350=>'L', -10351=>'L', -10352=>'L', -10353=>'L', -10354=>'L', -10355=>'L', -10356=>'L', -10357=>'L', -10358=>'L', -10359=>'L', -10360=>'L', -10361=>'L', -10362=>'L', -10363=>'L', -10364=>'L', -10365=>'L', -10366=>'L', -10367=>'L', -10368=>'L', -10369=>'L', -10370=>'L', -10371=>'L', -10372=>'L', -10373=>'L', -10374=>'L', -10375=>'L', -10376=>'L', -10377=>'L', -10378=>'L', -10379=>'L', -10380=>'L', -10381=>'L', -10382=>'L', -10383=>'L', -10384=>'L', -10385=>'L', -10386=>'L', -10387=>'L', -10388=>'L', -10389=>'L', -10390=>'L', -10391=>'L', -10392=>'L', -10393=>'L', -10394=>'L', -10395=>'L', -10396=>'L', -10397=>'L', -10398=>'L', -10399=>'L', -10400=>'L', -10401=>'L', -10402=>'L', -10403=>'L', -10404=>'L', -10405=>'L', -10406=>'L', -10407=>'L', -10408=>'L', -10409=>'L', -10410=>'L', -10411=>'L', -10412=>'L', -10413=>'L', -10414=>'L', -10415=>'L', -10416=>'L', -10417=>'L', -10418=>'L', -10419=>'L', -10420=>'L', -10421=>'L', -10422=>'L', -10423=>'L', -10424=>'L', -10425=>'L', -10426=>'L', -10427=>'L', -10428=>'L', -10429=>'L', -10430=>'L', -10431=>'L', -10432=>'L', -10433=>'L', -10434=>'L', -10435=>'L', -10436=>'L', -10437=>'L', -10438=>'L', -10439=>'L', -10440=>'L', -10441=>'L', -10442=>'L', -10443=>'L', -10444=>'L', -10445=>'L', -10446=>'L', -10447=>'L', -10448=>'L', -10449=>'L', -10450=>'L', -10451=>'L', -10452=>'L', -10453=>'L', -10454=>'L', -10455=>'L', -10456=>'L', -10457=>'L', -10458=>'L', -10459=>'L', -10460=>'L', -10461=>'L', -10462=>'L', -10463=>'L', -10464=>'L', -10465=>'L', -10466=>'L', -10467=>'L', -10468=>'L', -10469=>'L', -10470=>'L', -10471=>'L', -10472=>'L', -10473=>'L', -10474=>'L', -10475=>'L', -10476=>'L', -10477=>'L', -10478=>'L', -10479=>'L', -10480=>'L', -10481=>'L', -10482=>'L', -10483=>'L', -10484=>'L', -10485=>'L', -10486=>'L', -10487=>'L', -10488=>'L', -10489=>'L', -10490=>'L', -10491=>'L', -10492=>'L', -10493=>'L', -10494=>'L', -10495=>'L', -10496=>'ON', -10497=>'ON', -10498=>'ON', -10499=>'ON', -10500=>'ON', -10501=>'ON', -10502=>'ON', -10503=>'ON', -10504=>'ON', -10505=>'ON', -10506=>'ON', -10507=>'ON', -10508=>'ON', -10509=>'ON', -10510=>'ON', -10511=>'ON', -10512=>'ON', -10513=>'ON', -10514=>'ON', -10515=>'ON', -10516=>'ON', -10517=>'ON', -10518=>'ON', -10519=>'ON', -10520=>'ON', -10521=>'ON', -10522=>'ON', -10523=>'ON', -10524=>'ON', -10525=>'ON', -10526=>'ON', -10527=>'ON', -10528=>'ON', -10529=>'ON', -10530=>'ON', -10531=>'ON', -10532=>'ON', -10533=>'ON', -10534=>'ON', -10535=>'ON', -10536=>'ON', -10537=>'ON', -10538=>'ON', -10539=>'ON', -10540=>'ON', -10541=>'ON', -10542=>'ON', -10543=>'ON', -10544=>'ON', -10545=>'ON', -10546=>'ON', -10547=>'ON', -10548=>'ON', -10549=>'ON', -10550=>'ON', -10551=>'ON', -10552=>'ON', -10553=>'ON', -10554=>'ON', -10555=>'ON', -10556=>'ON', -10557=>'ON', -10558=>'ON', -10559=>'ON', -10560=>'ON', -10561=>'ON', -10562=>'ON', -10563=>'ON', -10564=>'ON', -10565=>'ON', -10566=>'ON', -10567=>'ON', -10568=>'ON', -10569=>'ON', -10570=>'ON', -10571=>'ON', -10572=>'ON', -10573=>'ON', -10574=>'ON', -10575=>'ON', -10576=>'ON', -10577=>'ON', -10578=>'ON', -10579=>'ON', -10580=>'ON', -10581=>'ON', -10582=>'ON', -10583=>'ON', -10584=>'ON', -10585=>'ON', -10586=>'ON', -10587=>'ON', -10588=>'ON', -10589=>'ON', -10590=>'ON', -10591=>'ON', -10592=>'ON', -10593=>'ON', -10594=>'ON', -10595=>'ON', -10596=>'ON', -10597=>'ON', -10598=>'ON', -10599=>'ON', -10600=>'ON', -10601=>'ON', -10602=>'ON', -10603=>'ON', -10604=>'ON', -10605=>'ON', -10606=>'ON', -10607=>'ON', -10608=>'ON', -10609=>'ON', -10610=>'ON', -10611=>'ON', -10612=>'ON', -10613=>'ON', -10614=>'ON', -10615=>'ON', -10616=>'ON', -10617=>'ON', -10618=>'ON', -10619=>'ON', -10620=>'ON', -10621=>'ON', -10622=>'ON', -10623=>'ON', -10624=>'ON', -10625=>'ON', -10626=>'ON', -10627=>'ON', -10628=>'ON', -10629=>'ON', -10630=>'ON', -10631=>'ON', -10632=>'ON', -10633=>'ON', -10634=>'ON', -10635=>'ON', -10636=>'ON', -10637=>'ON', -10638=>'ON', -10639=>'ON', -10640=>'ON', -10641=>'ON', -10642=>'ON', -10643=>'ON', -10644=>'ON', -10645=>'ON', -10646=>'ON', -10647=>'ON', -10648=>'ON', -10649=>'ON', -10650=>'ON', -10651=>'ON', -10652=>'ON', -10653=>'ON', -10654=>'ON', -10655=>'ON', -10656=>'ON', -10657=>'ON', -10658=>'ON', -10659=>'ON', -10660=>'ON', -10661=>'ON', -10662=>'ON', -10663=>'ON', -10664=>'ON', -10665=>'ON', -10666=>'ON', -10667=>'ON', -10668=>'ON', -10669=>'ON', -10670=>'ON', -10671=>'ON', -10672=>'ON', -10673=>'ON', -10674=>'ON', -10675=>'ON', -10676=>'ON', -10677=>'ON', -10678=>'ON', -10679=>'ON', -10680=>'ON', -10681=>'ON', -10682=>'ON', -10683=>'ON', -10684=>'ON', -10685=>'ON', -10686=>'ON', -10687=>'ON', -10688=>'ON', -10689=>'ON', -10690=>'ON', -10691=>'ON', -10692=>'ON', -10693=>'ON', -10694=>'ON', -10695=>'ON', -10696=>'ON', -10697=>'ON', -10698=>'ON', -10699=>'ON', -10700=>'ON', -10701=>'ON', -10702=>'ON', -10703=>'ON', -10704=>'ON', -10705=>'ON', -10706=>'ON', -10707=>'ON', -10708=>'ON', -10709=>'ON', -10710=>'ON', -10711=>'ON', -10712=>'ON', -10713=>'ON', -10714=>'ON', -10715=>'ON', -10716=>'ON', -10717=>'ON', -10718=>'ON', -10719=>'ON', -10720=>'ON', -10721=>'ON', -10722=>'ON', -10723=>'ON', -10724=>'ON', -10725=>'ON', -10726=>'ON', -10727=>'ON', -10728=>'ON', -10729=>'ON', -10730=>'ON', -10731=>'ON', -10732=>'ON', -10733=>'ON', -10734=>'ON', -10735=>'ON', -10736=>'ON', -10737=>'ON', -10738=>'ON', -10739=>'ON', -10740=>'ON', -10741=>'ON', -10742=>'ON', -10743=>'ON', -10744=>'ON', -10745=>'ON', -10746=>'ON', -10747=>'ON', -10748=>'ON', -10749=>'ON', -10750=>'ON', -10751=>'ON', -10752=>'ON', -10753=>'ON', -10754=>'ON', -10755=>'ON', -10756=>'ON', -10757=>'ON', -10758=>'ON', -10759=>'ON', -10760=>'ON', -10761=>'ON', -10762=>'ON', -10763=>'ON', -10764=>'ON', -10765=>'ON', -10766=>'ON', -10767=>'ON', -10768=>'ON', -10769=>'ON', -10770=>'ON', -10771=>'ON', -10772=>'ON', -10773=>'ON', -10774=>'ON', -10775=>'ON', -10776=>'ON', -10777=>'ON', -10778=>'ON', -10779=>'ON', -10780=>'ON', -10781=>'ON', -10782=>'ON', -10783=>'ON', -10784=>'ON', -10785=>'ON', -10786=>'ON', -10787=>'ON', -10788=>'ON', -10789=>'ON', -10790=>'ON', -10791=>'ON', -10792=>'ON', -10793=>'ON', -10794=>'ON', -10795=>'ON', -10796=>'ON', -10797=>'ON', -10798=>'ON', -10799=>'ON', -10800=>'ON', -10801=>'ON', -10802=>'ON', -10803=>'ON', -10804=>'ON', -10805=>'ON', -10806=>'ON', -10807=>'ON', -10808=>'ON', -10809=>'ON', -10810=>'ON', -10811=>'ON', -10812=>'ON', -10813=>'ON', -10814=>'ON', -10815=>'ON', -10816=>'ON', -10817=>'ON', -10818=>'ON', -10819=>'ON', -10820=>'ON', -10821=>'ON', -10822=>'ON', -10823=>'ON', -10824=>'ON', -10825=>'ON', -10826=>'ON', -10827=>'ON', -10828=>'ON', -10829=>'ON', -10830=>'ON', -10831=>'ON', -10832=>'ON', -10833=>'ON', -10834=>'ON', -10835=>'ON', -10836=>'ON', -10837=>'ON', -10838=>'ON', -10839=>'ON', -10840=>'ON', -10841=>'ON', -10842=>'ON', -10843=>'ON', -10844=>'ON', -10845=>'ON', -10846=>'ON', -10847=>'ON', -10848=>'ON', -10849=>'ON', -10850=>'ON', -10851=>'ON', -10852=>'ON', -10853=>'ON', -10854=>'ON', -10855=>'ON', -10856=>'ON', -10857=>'ON', -10858=>'ON', -10859=>'ON', -10860=>'ON', -10861=>'ON', -10862=>'ON', -10863=>'ON', -10864=>'ON', -10865=>'ON', -10866=>'ON', -10867=>'ON', -10868=>'ON', -10869=>'ON', -10870=>'ON', -10871=>'ON', -10872=>'ON', -10873=>'ON', -10874=>'ON', -10875=>'ON', -10876=>'ON', -10877=>'ON', -10878=>'ON', -10879=>'ON', -10880=>'ON', -10881=>'ON', -10882=>'ON', -10883=>'ON', -10884=>'ON', -10885=>'ON', -10886=>'ON', -10887=>'ON', -10888=>'ON', -10889=>'ON', -10890=>'ON', -10891=>'ON', -10892=>'ON', -10893=>'ON', -10894=>'ON', -10895=>'ON', -10896=>'ON', -10897=>'ON', -10898=>'ON', -10899=>'ON', -10900=>'ON', -10901=>'ON', -10902=>'ON', -10903=>'ON', -10904=>'ON', -10905=>'ON', -10906=>'ON', -10907=>'ON', -10908=>'ON', -10909=>'ON', -10910=>'ON', -10911=>'ON', -10912=>'ON', -10913=>'ON', -10914=>'ON', -10915=>'ON', -10916=>'ON', -10917=>'ON', -10918=>'ON', -10919=>'ON', -10920=>'ON', -10921=>'ON', -10922=>'ON', -10923=>'ON', -10924=>'ON', -10925=>'ON', -10926=>'ON', -10927=>'ON', -10928=>'ON', -10929=>'ON', -10930=>'ON', -10931=>'ON', -10932=>'ON', -10933=>'ON', -10934=>'ON', -10935=>'ON', -10936=>'ON', -10937=>'ON', -10938=>'ON', -10939=>'ON', -10940=>'ON', -10941=>'ON', -10942=>'ON', -10943=>'ON', -10944=>'ON', -10945=>'ON', -10946=>'ON', -10947=>'ON', -10948=>'ON', -10949=>'ON', -10950=>'ON', -10951=>'ON', -10952=>'ON', -10953=>'ON', -10954=>'ON', -10955=>'ON', -10956=>'ON', -10957=>'ON', -10958=>'ON', -10959=>'ON', -10960=>'ON', -10961=>'ON', -10962=>'ON', -10963=>'ON', -10964=>'ON', -10965=>'ON', -10966=>'ON', -10967=>'ON', -10968=>'ON', -10969=>'ON', -10970=>'ON', -10971=>'ON', -10972=>'ON', -10973=>'ON', -10974=>'ON', -10975=>'ON', -10976=>'ON', -10977=>'ON', -10978=>'ON', -10979=>'ON', -10980=>'ON', -10981=>'ON', -10982=>'ON', -10983=>'ON', -10984=>'ON', -10985=>'ON', -10986=>'ON', -10987=>'ON', -10988=>'ON', -10989=>'ON', -10990=>'ON', -10991=>'ON', -10992=>'ON', -10993=>'ON', -10994=>'ON', -10995=>'ON', -10996=>'ON', -10997=>'ON', -10998=>'ON', -10999=>'ON', -11000=>'ON', -11001=>'ON', -11002=>'ON', -11003=>'ON', -11004=>'ON', -11005=>'ON', -11006=>'ON', -11007=>'ON', -11008=>'ON', -11009=>'ON', -11010=>'ON', -11011=>'ON', -11012=>'ON', -11013=>'ON', -11014=>'ON', -11015=>'ON', -11016=>'ON', -11017=>'ON', -11018=>'ON', -11019=>'ON', -11020=>'ON', -11021=>'ON', -11022=>'ON', -11023=>'ON', -11024=>'ON', -11025=>'ON', -11026=>'ON', -11027=>'ON', -11028=>'ON', -11029=>'ON', -11030=>'ON', -11031=>'ON', -11032=>'ON', -11033=>'ON', -11034=>'ON', -11040=>'ON', -11041=>'ON', -11042=>'ON', -11043=>'ON', -11264=>'L', -11265=>'L', -11266=>'L', -11267=>'L', -11268=>'L', -11269=>'L', -11270=>'L', -11271=>'L', -11272=>'L', -11273=>'L', -11274=>'L', -11275=>'L', -11276=>'L', -11277=>'L', -11278=>'L', -11279=>'L', -11280=>'L', -11281=>'L', -11282=>'L', -11283=>'L', -11284=>'L', -11285=>'L', -11286=>'L', -11287=>'L', -11288=>'L', -11289=>'L', -11290=>'L', -11291=>'L', -11292=>'L', -11293=>'L', -11294=>'L', -11295=>'L', -11296=>'L', -11297=>'L', -11298=>'L', -11299=>'L', -11300=>'L', -11301=>'L', -11302=>'L', -11303=>'L', -11304=>'L', -11305=>'L', -11306=>'L', -11307=>'L', -11308=>'L', -11309=>'L', -11310=>'L', -11312=>'L', -11313=>'L', -11314=>'L', -11315=>'L', -11316=>'L', -11317=>'L', -11318=>'L', -11319=>'L', -11320=>'L', -11321=>'L', -11322=>'L', -11323=>'L', -11324=>'L', -11325=>'L', -11326=>'L', -11327=>'L', -11328=>'L', -11329=>'L', -11330=>'L', -11331=>'L', -11332=>'L', -11333=>'L', -11334=>'L', -11335=>'L', -11336=>'L', -11337=>'L', -11338=>'L', -11339=>'L', -11340=>'L', -11341=>'L', -11342=>'L', -11343=>'L', -11344=>'L', -11345=>'L', -11346=>'L', -11347=>'L', -11348=>'L', -11349=>'L', -11350=>'L', -11351=>'L', -11352=>'L', -11353=>'L', -11354=>'L', -11355=>'L', -11356=>'L', -11357=>'L', -11358=>'L', -11360=>'L', -11361=>'L', -11362=>'L', -11363=>'L', -11364=>'L', -11365=>'L', -11366=>'L', -11367=>'L', -11368=>'L', -11369=>'L', -11370=>'L', -11371=>'L', -11372=>'L', -11380=>'L', -11381=>'L', -11382=>'L', -11383=>'L', -11392=>'L', -11393=>'L', -11394=>'L', -11395=>'L', -11396=>'L', -11397=>'L', -11398=>'L', -11399=>'L', -11400=>'L', -11401=>'L', -11402=>'L', -11403=>'L', -11404=>'L', -11405=>'L', -11406=>'L', -11407=>'L', -11408=>'L', -11409=>'L', -11410=>'L', -11411=>'L', -11412=>'L', -11413=>'L', -11414=>'L', -11415=>'L', -11416=>'L', -11417=>'L', -11418=>'L', -11419=>'L', -11420=>'L', -11421=>'L', -11422=>'L', -11423=>'L', -11424=>'L', -11425=>'L', -11426=>'L', -11427=>'L', -11428=>'L', -11429=>'L', -11430=>'L', -11431=>'L', -11432=>'L', -11433=>'L', -11434=>'L', -11435=>'L', -11436=>'L', -11437=>'L', -11438=>'L', -11439=>'L', -11440=>'L', -11441=>'L', -11442=>'L', -11443=>'L', -11444=>'L', -11445=>'L', -11446=>'L', -11447=>'L', -11448=>'L', -11449=>'L', -11450=>'L', -11451=>'L', -11452=>'L', -11453=>'L', -11454=>'L', -11455=>'L', -11456=>'L', -11457=>'L', -11458=>'L', -11459=>'L', -11460=>'L', -11461=>'L', -11462=>'L', -11463=>'L', -11464=>'L', -11465=>'L', -11466=>'L', -11467=>'L', -11468=>'L', -11469=>'L', -11470=>'L', -11471=>'L', -11472=>'L', -11473=>'L', -11474=>'L', -11475=>'L', -11476=>'L', -11477=>'L', -11478=>'L', -11479=>'L', -11480=>'L', -11481=>'L', -11482=>'L', -11483=>'L', -11484=>'L', -11485=>'L', -11486=>'L', -11487=>'L', -11488=>'L', -11489=>'L', -11490=>'L', -11491=>'L', -11492=>'L', -11493=>'ON', -11494=>'ON', -11495=>'ON', -11496=>'ON', -11497=>'ON', -11498=>'ON', -11513=>'ON', -11514=>'ON', -11515=>'ON', -11516=>'ON', -11517=>'ON', -11518=>'ON', -11519=>'ON', -11520=>'L', -11521=>'L', -11522=>'L', -11523=>'L', -11524=>'L', -11525=>'L', -11526=>'L', -11527=>'L', -11528=>'L', -11529=>'L', -11530=>'L', -11531=>'L', -11532=>'L', -11533=>'L', -11534=>'L', -11535=>'L', -11536=>'L', -11537=>'L', -11538=>'L', -11539=>'L', -11540=>'L', -11541=>'L', -11542=>'L', -11543=>'L', -11544=>'L', -11545=>'L', -11546=>'L', -11547=>'L', -11548=>'L', -11549=>'L', -11550=>'L', -11551=>'L', -11552=>'L', -11553=>'L', -11554=>'L', -11555=>'L', -11556=>'L', -11557=>'L', -11568=>'L', -11569=>'L', -11570=>'L', -11571=>'L', -11572=>'L', -11573=>'L', -11574=>'L', -11575=>'L', -11576=>'L', -11577=>'L', -11578=>'L', -11579=>'L', -11580=>'L', -11581=>'L', -11582=>'L', -11583=>'L', -11584=>'L', -11585=>'L', -11586=>'L', -11587=>'L', -11588=>'L', -11589=>'L', -11590=>'L', -11591=>'L', -11592=>'L', -11593=>'L', -11594=>'L', -11595=>'L', -11596=>'L', -11597=>'L', -11598=>'L', -11599=>'L', -11600=>'L', -11601=>'L', -11602=>'L', -11603=>'L', -11604=>'L', -11605=>'L', -11606=>'L', -11607=>'L', -11608=>'L', -11609=>'L', -11610=>'L', -11611=>'L', -11612=>'L', -11613=>'L', -11614=>'L', -11615=>'L', -11616=>'L', -11617=>'L', -11618=>'L', -11619=>'L', -11620=>'L', -11621=>'L', -11631=>'L', -11648=>'L', -11649=>'L', -11650=>'L', -11651=>'L', -11652=>'L', -11653=>'L', -11654=>'L', -11655=>'L', -11656=>'L', -11657=>'L', -11658=>'L', -11659=>'L', -11660=>'L', -11661=>'L', -11662=>'L', -11663=>'L', -11664=>'L', -11665=>'L', -11666=>'L', -11667=>'L', -11668=>'L', -11669=>'L', -11670=>'L', -11680=>'L', -11681=>'L', -11682=>'L', -11683=>'L', -11684=>'L', -11685=>'L', -11686=>'L', -11688=>'L', -11689=>'L', -11690=>'L', -11691=>'L', -11692=>'L', -11693=>'L', -11694=>'L', -11696=>'L', -11697=>'L', -11698=>'L', -11699=>'L', -11700=>'L', -11701=>'L', -11702=>'L', -11704=>'L', -11705=>'L', -11706=>'L', -11707=>'L', -11708=>'L', -11709=>'L', -11710=>'L', -11712=>'L', -11713=>'L', -11714=>'L', -11715=>'L', -11716=>'L', -11717=>'L', -11718=>'L', -11720=>'L', -11721=>'L', -11722=>'L', -11723=>'L', -11724=>'L', -11725=>'L', -11726=>'L', -11728=>'L', -11729=>'L', -11730=>'L', -11731=>'L', -11732=>'L', -11733=>'L', -11734=>'L', -11736=>'L', -11737=>'L', -11738=>'L', -11739=>'L', -11740=>'L', -11741=>'L', -11742=>'L', -11776=>'ON', -11777=>'ON', -11778=>'ON', -11779=>'ON', -11780=>'ON', -11781=>'ON', -11782=>'ON', -11783=>'ON', -11784=>'ON', -11785=>'ON', -11786=>'ON', -11787=>'ON', -11788=>'ON', -11789=>'ON', -11790=>'ON', -11791=>'ON', -11792=>'ON', -11793=>'ON', -11794=>'ON', -11795=>'ON', -11796=>'ON', -11797=>'ON', -11798=>'ON', -11799=>'ON', -11804=>'ON', -11805=>'ON', -11904=>'ON', -11905=>'ON', -11906=>'ON', -11907=>'ON', -11908=>'ON', -11909=>'ON', -11910=>'ON', -11911=>'ON', -11912=>'ON', -11913=>'ON', -11914=>'ON', -11915=>'ON', -11916=>'ON', -11917=>'ON', -11918=>'ON', -11919=>'ON', -11920=>'ON', -11921=>'ON', -11922=>'ON', -11923=>'ON', -11924=>'ON', -11925=>'ON', -11926=>'ON', -11927=>'ON', -11928=>'ON', -11929=>'ON', -11931=>'ON', -11932=>'ON', -11933=>'ON', -11934=>'ON', -11935=>'ON', -11936=>'ON', -11937=>'ON', -11938=>'ON', -11939=>'ON', -11940=>'ON', -11941=>'ON', -11942=>'ON', -11943=>'ON', -11944=>'ON', -11945=>'ON', -11946=>'ON', -11947=>'ON', -11948=>'ON', -11949=>'ON', -11950=>'ON', -11951=>'ON', -11952=>'ON', -11953=>'ON', -11954=>'ON', -11955=>'ON', -11956=>'ON', -11957=>'ON', -11958=>'ON', -11959=>'ON', -11960=>'ON', -11961=>'ON', -11962=>'ON', -11963=>'ON', -11964=>'ON', -11965=>'ON', -11966=>'ON', -11967=>'ON', -11968=>'ON', -11969=>'ON', -11970=>'ON', -11971=>'ON', -11972=>'ON', -11973=>'ON', -11974=>'ON', -11975=>'ON', -11976=>'ON', -11977=>'ON', -11978=>'ON', -11979=>'ON', -11980=>'ON', -11981=>'ON', -11982=>'ON', -11983=>'ON', -11984=>'ON', -11985=>'ON', -11986=>'ON', -11987=>'ON', -11988=>'ON', -11989=>'ON', -11990=>'ON', -11991=>'ON', -11992=>'ON', -11993=>'ON', -11994=>'ON', -11995=>'ON', -11996=>'ON', -11997=>'ON', -11998=>'ON', -11999=>'ON', -12000=>'ON', -12001=>'ON', -12002=>'ON', -12003=>'ON', -12004=>'ON', -12005=>'ON', -12006=>'ON', -12007=>'ON', -12008=>'ON', -12009=>'ON', -12010=>'ON', -12011=>'ON', -12012=>'ON', -12013=>'ON', -12014=>'ON', -12015=>'ON', -12016=>'ON', -12017=>'ON', -12018=>'ON', -12019=>'ON', -12032=>'ON', -12033=>'ON', -12034=>'ON', -12035=>'ON', -12036=>'ON', -12037=>'ON', -12038=>'ON', -12039=>'ON', -12040=>'ON', -12041=>'ON', -12042=>'ON', -12043=>'ON', -12044=>'ON', -12045=>'ON', -12046=>'ON', -12047=>'ON', -12048=>'ON', -12049=>'ON', -12050=>'ON', -12051=>'ON', -12052=>'ON', -12053=>'ON', -12054=>'ON', -12055=>'ON', -12056=>'ON', -12057=>'ON', -12058=>'ON', -12059=>'ON', -12060=>'ON', -12061=>'ON', -12062=>'ON', -12063=>'ON', -12064=>'ON', -12065=>'ON', -12066=>'ON', -12067=>'ON', -12068=>'ON', -12069=>'ON', -12070=>'ON', -12071=>'ON', -12072=>'ON', -12073=>'ON', -12074=>'ON', -12075=>'ON', -12076=>'ON', -12077=>'ON', -12078=>'ON', -12079=>'ON', -12080=>'ON', -12081=>'ON', -12082=>'ON', -12083=>'ON', -12084=>'ON', -12085=>'ON', -12086=>'ON', -12087=>'ON', -12088=>'ON', -12089=>'ON', -12090=>'ON', -12091=>'ON', -12092=>'ON', -12093=>'ON', -12094=>'ON', -12095=>'ON', -12096=>'ON', -12097=>'ON', -12098=>'ON', -12099=>'ON', -12100=>'ON', -12101=>'ON', -12102=>'ON', -12103=>'ON', -12104=>'ON', -12105=>'ON', -12106=>'ON', -12107=>'ON', -12108=>'ON', -12109=>'ON', -12110=>'ON', -12111=>'ON', -12112=>'ON', -12113=>'ON', -12114=>'ON', -12115=>'ON', -12116=>'ON', -12117=>'ON', -12118=>'ON', -12119=>'ON', -12120=>'ON', -12121=>'ON', -12122=>'ON', -12123=>'ON', -12124=>'ON', -12125=>'ON', -12126=>'ON', -12127=>'ON', -12128=>'ON', -12129=>'ON', -12130=>'ON', -12131=>'ON', -12132=>'ON', -12133=>'ON', -12134=>'ON', -12135=>'ON', -12136=>'ON', -12137=>'ON', -12138=>'ON', -12139=>'ON', -12140=>'ON', -12141=>'ON', -12142=>'ON', -12143=>'ON', -12144=>'ON', -12145=>'ON', -12146=>'ON', -12147=>'ON', -12148=>'ON', -12149=>'ON', -12150=>'ON', -12151=>'ON', -12152=>'ON', -12153=>'ON', -12154=>'ON', -12155=>'ON', -12156=>'ON', -12157=>'ON', -12158=>'ON', -12159=>'ON', -12160=>'ON', -12161=>'ON', -12162=>'ON', -12163=>'ON', -12164=>'ON', -12165=>'ON', -12166=>'ON', -12167=>'ON', -12168=>'ON', -12169=>'ON', -12170=>'ON', -12171=>'ON', -12172=>'ON', -12173=>'ON', -12174=>'ON', -12175=>'ON', -12176=>'ON', -12177=>'ON', -12178=>'ON', -12179=>'ON', -12180=>'ON', -12181=>'ON', -12182=>'ON', -12183=>'ON', -12184=>'ON', -12185=>'ON', -12186=>'ON', -12187=>'ON', -12188=>'ON', -12189=>'ON', -12190=>'ON', -12191=>'ON', -12192=>'ON', -12193=>'ON', -12194=>'ON', -12195=>'ON', -12196=>'ON', -12197=>'ON', -12198=>'ON', -12199=>'ON', -12200=>'ON', -12201=>'ON', -12202=>'ON', -12203=>'ON', -12204=>'ON', -12205=>'ON', -12206=>'ON', -12207=>'ON', -12208=>'ON', -12209=>'ON', -12210=>'ON', -12211=>'ON', -12212=>'ON', -12213=>'ON', -12214=>'ON', -12215=>'ON', -12216=>'ON', -12217=>'ON', -12218=>'ON', -12219=>'ON', -12220=>'ON', -12221=>'ON', -12222=>'ON', -12223=>'ON', -12224=>'ON', -12225=>'ON', -12226=>'ON', -12227=>'ON', -12228=>'ON', -12229=>'ON', -12230=>'ON', -12231=>'ON', -12232=>'ON', -12233=>'ON', -12234=>'ON', -12235=>'ON', -12236=>'ON', -12237=>'ON', -12238=>'ON', -12239=>'ON', -12240=>'ON', -12241=>'ON', -12242=>'ON', -12243=>'ON', -12244=>'ON', -12245=>'ON', -12272=>'ON', -12273=>'ON', -12274=>'ON', -12275=>'ON', -12276=>'ON', -12277=>'ON', -12278=>'ON', -12279=>'ON', -12280=>'ON', -12281=>'ON', -12282=>'ON', -12283=>'ON', -12288=>'WS', -12289=>'ON', -12290=>'ON', -12291=>'ON', -12292=>'ON', -12293=>'L', -12294=>'L', -12295=>'L', -12296=>'ON', -12297=>'ON', -12298=>'ON', -12299=>'ON', -12300=>'ON', -12301=>'ON', -12302=>'ON', -12303=>'ON', -12304=>'ON', -12305=>'ON', -12306=>'ON', -12307=>'ON', -12308=>'ON', -12309=>'ON', -12310=>'ON', -12311=>'ON', -12312=>'ON', -12313=>'ON', -12314=>'ON', -12315=>'ON', -12316=>'ON', -12317=>'ON', -12318=>'ON', -12319=>'ON', -12320=>'ON', -12321=>'L', -12322=>'L', -12323=>'L', -12324=>'L', -12325=>'L', -12326=>'L', -12327=>'L', -12328=>'L', -12329=>'L', -12330=>'NSM', -12331=>'NSM', -12332=>'NSM', -12333=>'NSM', -12334=>'NSM', -12335=>'NSM', -12336=>'ON', -12337=>'L', -12338=>'L', -12339=>'L', -12340=>'L', -12341=>'L', -12342=>'ON', -12343=>'ON', -12344=>'L', -12345=>'L', -12346=>'L', -12347=>'L', -12348=>'L', -12349=>'ON', -12350=>'ON', -12351=>'ON', -12353=>'L', -12354=>'L', -12355=>'L', -12356=>'L', -12357=>'L', -12358=>'L', -12359=>'L', -12360=>'L', -12361=>'L', -12362=>'L', -12363=>'L', -12364=>'L', -12365=>'L', -12366=>'L', -12367=>'L', -12368=>'L', -12369=>'L', -12370=>'L', -12371=>'L', -12372=>'L', -12373=>'L', -12374=>'L', -12375=>'L', -12376=>'L', -12377=>'L', -12378=>'L', -12379=>'L', -12380=>'L', -12381=>'L', -12382=>'L', -12383=>'L', -12384=>'L', -12385=>'L', -12386=>'L', -12387=>'L', -12388=>'L', -12389=>'L', -12390=>'L', -12391=>'L', -12392=>'L', -12393=>'L', -12394=>'L', -12395=>'L', -12396=>'L', -12397=>'L', -12398=>'L', -12399=>'L', -12400=>'L', -12401=>'L', -12402=>'L', -12403=>'L', -12404=>'L', -12405=>'L', -12406=>'L', -12407=>'L', -12408=>'L', -12409=>'L', -12410=>'L', -12411=>'L', -12412=>'L', -12413=>'L', -12414=>'L', -12415=>'L', -12416=>'L', -12417=>'L', -12418=>'L', -12419=>'L', -12420=>'L', -12421=>'L', -12422=>'L', -12423=>'L', -12424=>'L', -12425=>'L', -12426=>'L', -12427=>'L', -12428=>'L', -12429=>'L', -12430=>'L', -12431=>'L', -12432=>'L', -12433=>'L', -12434=>'L', -12435=>'L', -12436=>'L', -12437=>'L', -12438=>'L', -12441=>'NSM', -12442=>'NSM', -12443=>'ON', -12444=>'ON', -12445=>'L', -12446=>'L', -12447=>'L', -12448=>'ON', -12449=>'L', -12450=>'L', -12451=>'L', -12452=>'L', -12453=>'L', -12454=>'L', -12455=>'L', -12456=>'L', -12457=>'L', -12458=>'L', -12459=>'L', -12460=>'L', -12461=>'L', -12462=>'L', -12463=>'L', -12464=>'L', -12465=>'L', -12466=>'L', -12467=>'L', -12468=>'L', -12469=>'L', -12470=>'L', -12471=>'L', -12472=>'L', -12473=>'L', -12474=>'L', -12475=>'L', -12476=>'L', -12477=>'L', -12478=>'L', -12479=>'L', -12480=>'L', -12481=>'L', -12482=>'L', -12483=>'L', -12484=>'L', -12485=>'L', -12486=>'L', -12487=>'L', -12488=>'L', -12489=>'L', -12490=>'L', -12491=>'L', -12492=>'L', -12493=>'L', -12494=>'L', -12495=>'L', -12496=>'L', -12497=>'L', -12498=>'L', -12499=>'L', -12500=>'L', -12501=>'L', -12502=>'L', -12503=>'L', -12504=>'L', -12505=>'L', -12506=>'L', -12507=>'L', -12508=>'L', -12509=>'L', -12510=>'L', -12511=>'L', -12512=>'L', -12513=>'L', -12514=>'L', -12515=>'L', -12516=>'L', -12517=>'L', -12518=>'L', -12519=>'L', -12520=>'L', -12521=>'L', -12522=>'L', -12523=>'L', -12524=>'L', -12525=>'L', -12526=>'L', -12527=>'L', -12528=>'L', -12529=>'L', -12530=>'L', -12531=>'L', -12532=>'L', -12533=>'L', -12534=>'L', -12535=>'L', -12536=>'L', -12537=>'L', -12538=>'L', -12539=>'ON', -12540=>'L', -12541=>'L', -12542=>'L', -12543=>'L', -12549=>'L', -12550=>'L', -12551=>'L', -12552=>'L', -12553=>'L', -12554=>'L', -12555=>'L', -12556=>'L', -12557=>'L', -12558=>'L', -12559=>'L', -12560=>'L', -12561=>'L', -12562=>'L', -12563=>'L', -12564=>'L', -12565=>'L', -12566=>'L', -12567=>'L', -12568=>'L', -12569=>'L', -12570=>'L', -12571=>'L', -12572=>'L', -12573=>'L', -12574=>'L', -12575=>'L', -12576=>'L', -12577=>'L', -12578=>'L', -12579=>'L', -12580=>'L', -12581=>'L', -12582=>'L', -12583=>'L', -12584=>'L', -12585=>'L', -12586=>'L', -12587=>'L', -12588=>'L', -12593=>'L', -12594=>'L', -12595=>'L', -12596=>'L', -12597=>'L', -12598=>'L', -12599=>'L', -12600=>'L', -12601=>'L', -12602=>'L', -12603=>'L', -12604=>'L', -12605=>'L', -12606=>'L', -12607=>'L', -12608=>'L', -12609=>'L', -12610=>'L', -12611=>'L', -12612=>'L', -12613=>'L', -12614=>'L', -12615=>'L', -12616=>'L', -12617=>'L', -12618=>'L', -12619=>'L', -12620=>'L', -12621=>'L', -12622=>'L', -12623=>'L', -12624=>'L', -12625=>'L', -12626=>'L', -12627=>'L', -12628=>'L', -12629=>'L', -12630=>'L', -12631=>'L', -12632=>'L', -12633=>'L', -12634=>'L', -12635=>'L', -12636=>'L', -12637=>'L', -12638=>'L', -12639=>'L', -12640=>'L', -12641=>'L', -12642=>'L', -12643=>'L', -12644=>'L', -12645=>'L', -12646=>'L', -12647=>'L', -12648=>'L', -12649=>'L', -12650=>'L', -12651=>'L', -12652=>'L', -12653=>'L', -12654=>'L', -12655=>'L', -12656=>'L', -12657=>'L', -12658=>'L', -12659=>'L', -12660=>'L', -12661=>'L', -12662=>'L', -12663=>'L', -12664=>'L', -12665=>'L', -12666=>'L', -12667=>'L', -12668=>'L', -12669=>'L', -12670=>'L', -12671=>'L', -12672=>'L', -12673=>'L', -12674=>'L', -12675=>'L', -12676=>'L', -12677=>'L', -12678=>'L', -12679=>'L', -12680=>'L', -12681=>'L', -12682=>'L', -12683=>'L', -12684=>'L', -12685=>'L', -12686=>'L', -12688=>'L', -12689=>'L', -12690=>'L', -12691=>'L', -12692=>'L', -12693=>'L', -12694=>'L', -12695=>'L', -12696=>'L', -12697=>'L', -12698=>'L', -12699=>'L', -12700=>'L', -12701=>'L', -12702=>'L', -12703=>'L', -12704=>'L', -12705=>'L', -12706=>'L', -12707=>'L', -12708=>'L', -12709=>'L', -12710=>'L', -12711=>'L', -12712=>'L', -12713=>'L', -12714=>'L', -12715=>'L', -12716=>'L', -12717=>'L', -12718=>'L', -12719=>'L', -12720=>'L', -12721=>'L', -12722=>'L', -12723=>'L', -12724=>'L', -12725=>'L', -12726=>'L', -12727=>'L', -12736=>'ON', -12737=>'ON', -12738=>'ON', -12739=>'ON', -12740=>'ON', -12741=>'ON', -12742=>'ON', -12743=>'ON', -12744=>'ON', -12745=>'ON', -12746=>'ON', -12747=>'ON', -12748=>'ON', -12749=>'ON', -12750=>'ON', -12751=>'ON', -12784=>'L', -12785=>'L', -12786=>'L', -12787=>'L', -12788=>'L', -12789=>'L', -12790=>'L', -12791=>'L', -12792=>'L', -12793=>'L', -12794=>'L', -12795=>'L', -12796=>'L', -12797=>'L', -12798=>'L', -12799=>'L', -12800=>'L', -12801=>'L', -12802=>'L', -12803=>'L', -12804=>'L', -12805=>'L', -12806=>'L', -12807=>'L', -12808=>'L', -12809=>'L', -12810=>'L', -12811=>'L', -12812=>'L', -12813=>'L', -12814=>'L', -12815=>'L', -12816=>'L', -12817=>'L', -12818=>'L', -12819=>'L', -12820=>'L', -12821=>'L', -12822=>'L', -12823=>'L', -12824=>'L', -12825=>'L', -12826=>'L', -12827=>'L', -12828=>'L', -12829=>'ON', -12830=>'ON', -12832=>'L', -12833=>'L', -12834=>'L', -12835=>'L', -12836=>'L', -12837=>'L', -12838=>'L', -12839=>'L', -12840=>'L', -12841=>'L', -12842=>'L', -12843=>'L', -12844=>'L', -12845=>'L', -12846=>'L', -12847=>'L', -12848=>'L', -12849=>'L', -12850=>'L', -12851=>'L', -12852=>'L', -12853=>'L', -12854=>'L', -12855=>'L', -12856=>'L', -12857=>'L', -12858=>'L', -12859=>'L', -12860=>'L', -12861=>'L', -12862=>'L', -12863=>'L', -12864=>'L', -12865=>'L', -12866=>'L', -12867=>'L', -12880=>'ON', -12881=>'ON', -12882=>'ON', -12883=>'ON', -12884=>'ON', -12885=>'ON', -12886=>'ON', -12887=>'ON', -12888=>'ON', -12889=>'ON', -12890=>'ON', -12891=>'ON', -12892=>'ON', -12893=>'ON', -12894=>'ON', -12895=>'ON', -12896=>'L', -12897=>'L', -12898=>'L', -12899=>'L', -12900=>'L', -12901=>'L', -12902=>'L', -12903=>'L', -12904=>'L', -12905=>'L', -12906=>'L', -12907=>'L', -12908=>'L', -12909=>'L', -12910=>'L', -12911=>'L', -12912=>'L', -12913=>'L', -12914=>'L', -12915=>'L', -12916=>'L', -12917=>'L', -12918=>'L', -12919=>'L', -12920=>'L', -12921=>'L', -12922=>'L', -12923=>'L', -12924=>'ON', -12925=>'ON', -12926=>'ON', -12927=>'L', -12928=>'L', -12929=>'L', -12930=>'L', -12931=>'L', -12932=>'L', -12933=>'L', -12934=>'L', -12935=>'L', -12936=>'L', -12937=>'L', -12938=>'L', -12939=>'L', -12940=>'L', -12941=>'L', -12942=>'L', -12943=>'L', -12944=>'L', -12945=>'L', -12946=>'L', -12947=>'L', -12948=>'L', -12949=>'L', -12950=>'L', -12951=>'L', -12952=>'L', -12953=>'L', -12954=>'L', -12955=>'L', -12956=>'L', -12957=>'L', -12958=>'L', -12959=>'L', -12960=>'L', -12961=>'L', -12962=>'L', -12963=>'L', -12964=>'L', -12965=>'L', -12966=>'L', -12967=>'L', -12968=>'L', -12969=>'L', -12970=>'L', -12971=>'L', -12972=>'L', -12973=>'L', -12974=>'L', -12975=>'L', -12976=>'L', -12977=>'ON', -12978=>'ON', -12979=>'ON', -12980=>'ON', -12981=>'ON', -12982=>'ON', -12983=>'ON', -12984=>'ON', -12985=>'ON', -12986=>'ON', -12987=>'ON', -12988=>'ON', -12989=>'ON', -12990=>'ON', -12991=>'ON', -12992=>'L', -12993=>'L', -12994=>'L', -12995=>'L', -12996=>'L', -12997=>'L', -12998=>'L', -12999=>'L', -13000=>'L', -13001=>'L', -13002=>'L', -13003=>'L', -13004=>'ON', -13005=>'ON', -13006=>'ON', -13007=>'ON', -13008=>'L', -13009=>'L', -13010=>'L', -13011=>'L', -13012=>'L', -13013=>'L', -13014=>'L', -13015=>'L', -13016=>'L', -13017=>'L', -13018=>'L', -13019=>'L', -13020=>'L', -13021=>'L', -13022=>'L', -13023=>'L', -13024=>'L', -13025=>'L', -13026=>'L', -13027=>'L', -13028=>'L', -13029=>'L', -13030=>'L', -13031=>'L', -13032=>'L', -13033=>'L', -13034=>'L', -13035=>'L', -13036=>'L', -13037=>'L', -13038=>'L', -13039=>'L', -13040=>'L', -13041=>'L', -13042=>'L', -13043=>'L', -13044=>'L', -13045=>'L', -13046=>'L', -13047=>'L', -13048=>'L', -13049=>'L', -13050=>'L', -13051=>'L', -13052=>'L', -13053=>'L', -13054=>'L', -13056=>'L', -13057=>'L', -13058=>'L', -13059=>'L', -13060=>'L', -13061=>'L', -13062=>'L', -13063=>'L', -13064=>'L', -13065=>'L', -13066=>'L', -13067=>'L', -13068=>'L', -13069=>'L', -13070=>'L', -13071=>'L', -13072=>'L', -13073=>'L', -13074=>'L', -13075=>'L', -13076=>'L', -13077=>'L', -13078=>'L', -13079=>'L', -13080=>'L', -13081=>'L', -13082=>'L', -13083=>'L', -13084=>'L', -13085=>'L', -13086=>'L', -13087=>'L', -13088=>'L', -13089=>'L', -13090=>'L', -13091=>'L', -13092=>'L', -13093=>'L', -13094=>'L', -13095=>'L', -13096=>'L', -13097=>'L', -13098=>'L', -13099=>'L', -13100=>'L', -13101=>'L', -13102=>'L', -13103=>'L', -13104=>'L', -13105=>'L', -13106=>'L', -13107=>'L', -13108=>'L', -13109=>'L', -13110=>'L', -13111=>'L', -13112=>'L', -13113=>'L', -13114=>'L', -13115=>'L', -13116=>'L', -13117=>'L', -13118=>'L', -13119=>'L', -13120=>'L', -13121=>'L', -13122=>'L', -13123=>'L', -13124=>'L', -13125=>'L', -13126=>'L', -13127=>'L', -13128=>'L', -13129=>'L', -13130=>'L', -13131=>'L', -13132=>'L', -13133=>'L', -13134=>'L', -13135=>'L', -13136=>'L', -13137=>'L', -13138=>'L', -13139=>'L', -13140=>'L', -13141=>'L', -13142=>'L', -13143=>'L', -13144=>'L', -13145=>'L', -13146=>'L', -13147=>'L', -13148=>'L', -13149=>'L', -13150=>'L', -13151=>'L', -13152=>'L', -13153=>'L', -13154=>'L', -13155=>'L', -13156=>'L', -13157=>'L', -13158=>'L', -13159=>'L', -13160=>'L', -13161=>'L', -13162=>'L', -13163=>'L', -13164=>'L', -13165=>'L', -13166=>'L', -13167=>'L', -13168=>'L', -13169=>'L', -13170=>'L', -13171=>'L', -13172=>'L', -13173=>'L', -13174=>'L', -13175=>'ON', -13176=>'ON', -13177=>'ON', -13178=>'ON', -13179=>'L', -13180=>'L', -13181=>'L', -13182=>'L', -13183=>'L', -13184=>'L', -13185=>'L', -13186=>'L', -13187=>'L', -13188=>'L', -13189=>'L', -13190=>'L', -13191=>'L', -13192=>'L', -13193=>'L', -13194=>'L', -13195=>'L', -13196=>'L', -13197=>'L', -13198=>'L', -13199=>'L', -13200=>'L', -13201=>'L', -13202=>'L', -13203=>'L', -13204=>'L', -13205=>'L', -13206=>'L', -13207=>'L', -13208=>'L', -13209=>'L', -13210=>'L', -13211=>'L', -13212=>'L', -13213=>'L', -13214=>'L', -13215=>'L', -13216=>'L', -13217=>'L', -13218=>'L', -13219=>'L', -13220=>'L', -13221=>'L', -13222=>'L', -13223=>'L', -13224=>'L', -13225=>'L', -13226=>'L', -13227=>'L', -13228=>'L', -13229=>'L', -13230=>'L', -13231=>'L', -13232=>'L', -13233=>'L', -13234=>'L', -13235=>'L', -13236=>'L', -13237=>'L', -13238=>'L', -13239=>'L', -13240=>'L', -13241=>'L', -13242=>'L', -13243=>'L', -13244=>'L', -13245=>'L', -13246=>'L', -13247=>'L', -13248=>'L', -13249=>'L', -13250=>'L', -13251=>'L', -13252=>'L', -13253=>'L', -13254=>'L', -13255=>'L', -13256=>'L', -13257=>'L', -13258=>'L', -13259=>'L', -13260=>'L', -13261=>'L', -13262=>'L', -13263=>'L', -13264=>'L', -13265=>'L', -13266=>'L', -13267=>'L', -13268=>'L', -13269=>'L', -13270=>'L', -13271=>'L', -13272=>'L', -13273=>'L', -13274=>'L', -13275=>'L', -13276=>'L', -13277=>'L', -13278=>'ON', -13279=>'ON', -13280=>'L', -13281=>'L', -13282=>'L', -13283=>'L', -13284=>'L', -13285=>'L', -13286=>'L', -13287=>'L', -13288=>'L', -13289=>'L', -13290=>'L', -13291=>'L', -13292=>'L', -13293=>'L', -13294=>'L', -13295=>'L', -13296=>'L', -13297=>'L', -13298=>'L', -13299=>'L', -13300=>'L', -13301=>'L', -13302=>'L', -13303=>'L', -13304=>'L', -13305=>'L', -13306=>'L', -13307=>'L', -13308=>'L', -13309=>'L', -13310=>'L', -13311=>'ON', -13312=>'L', -19893=>'L', -19904=>'ON', -19905=>'ON', -19906=>'ON', -19907=>'ON', -19908=>'ON', -19909=>'ON', -19910=>'ON', -19911=>'ON', -19912=>'ON', -19913=>'ON', -19914=>'ON', -19915=>'ON', -19916=>'ON', -19917=>'ON', -19918=>'ON', -19919=>'ON', -19920=>'ON', -19921=>'ON', -19922=>'ON', -19923=>'ON', -19924=>'ON', -19925=>'ON', -19926=>'ON', -19927=>'ON', -19928=>'ON', -19929=>'ON', -19930=>'ON', -19931=>'ON', -19932=>'ON', -19933=>'ON', -19934=>'ON', -19935=>'ON', -19936=>'ON', -19937=>'ON', -19938=>'ON', -19939=>'ON', -19940=>'ON', -19941=>'ON', -19942=>'ON', -19943=>'ON', -19944=>'ON', -19945=>'ON', -19946=>'ON', -19947=>'ON', -19948=>'ON', -19949=>'ON', -19950=>'ON', -19951=>'ON', -19952=>'ON', -19953=>'ON', -19954=>'ON', -19955=>'ON', -19956=>'ON', -19957=>'ON', -19958=>'ON', -19959=>'ON', -19960=>'ON', -19961=>'ON', -19962=>'ON', -19963=>'ON', -19964=>'ON', -19965=>'ON', -19966=>'ON', -19967=>'ON', -19968=>'L', -40891=>'L', -40960=>'L', -40961=>'L', -40962=>'L', -40963=>'L', -40964=>'L', -40965=>'L', -40966=>'L', -40967=>'L', -40968=>'L', -40969=>'L', -40970=>'L', -40971=>'L', -40972=>'L', -40973=>'L', -40974=>'L', -40975=>'L', -40976=>'L', -40977=>'L', -40978=>'L', -40979=>'L', -40980=>'L', -40981=>'L', -40982=>'L', -40983=>'L', -40984=>'L', -40985=>'L', -40986=>'L', -40987=>'L', -40988=>'L', -40989=>'L', -40990=>'L', -40991=>'L', -40992=>'L', -40993=>'L', -40994=>'L', -40995=>'L', -40996=>'L', -40997=>'L', -40998=>'L', -40999=>'L', -41000=>'L', -41001=>'L', -41002=>'L', -41003=>'L', -41004=>'L', -41005=>'L', -41006=>'L', -41007=>'L', -41008=>'L', -41009=>'L', -41010=>'L', -41011=>'L', -41012=>'L', -41013=>'L', -41014=>'L', -41015=>'L', -41016=>'L', -41017=>'L', -41018=>'L', -41019=>'L', -41020=>'L', -41021=>'L', -41022=>'L', -41023=>'L', -41024=>'L', -41025=>'L', -41026=>'L', -41027=>'L', -41028=>'L', -41029=>'L', -41030=>'L', -41031=>'L', -41032=>'L', -41033=>'L', -41034=>'L', -41035=>'L', -41036=>'L', -41037=>'L', -41038=>'L', -41039=>'L', -41040=>'L', -41041=>'L', -41042=>'L', -41043=>'L', -41044=>'L', -41045=>'L', -41046=>'L', -41047=>'L', -41048=>'L', -41049=>'L', -41050=>'L', -41051=>'L', -41052=>'L', -41053=>'L', -41054=>'L', -41055=>'L', -41056=>'L', -41057=>'L', -41058=>'L', -41059=>'L', -41060=>'L', -41061=>'L', -41062=>'L', -41063=>'L', -41064=>'L', -41065=>'L', -41066=>'L', -41067=>'L', -41068=>'L', -41069=>'L', -41070=>'L', -41071=>'L', -41072=>'L', -41073=>'L', -41074=>'L', -41075=>'L', -41076=>'L', -41077=>'L', -41078=>'L', -41079=>'L', -41080=>'L', -41081=>'L', -41082=>'L', -41083=>'L', -41084=>'L', -41085=>'L', -41086=>'L', -41087=>'L', -41088=>'L', -41089=>'L', -41090=>'L', -41091=>'L', -41092=>'L', -41093=>'L', -41094=>'L', -41095=>'L', -41096=>'L', -41097=>'L', -41098=>'L', -41099=>'L', -41100=>'L', -41101=>'L', -41102=>'L', -41103=>'L', -41104=>'L', -41105=>'L', -41106=>'L', -41107=>'L', -41108=>'L', -41109=>'L', -41110=>'L', -41111=>'L', -41112=>'L', -41113=>'L', -41114=>'L', -41115=>'L', -41116=>'L', -41117=>'L', -41118=>'L', -41119=>'L', -41120=>'L', -41121=>'L', -41122=>'L', -41123=>'L', -41124=>'L', -41125=>'L', -41126=>'L', -41127=>'L', -41128=>'L', -41129=>'L', -41130=>'L', -41131=>'L', -41132=>'L', -41133=>'L', -41134=>'L', -41135=>'L', -41136=>'L', -41137=>'L', -41138=>'L', -41139=>'L', -41140=>'L', -41141=>'L', -41142=>'L', -41143=>'L', -41144=>'L', -41145=>'L', -41146=>'L', -41147=>'L', -41148=>'L', -41149=>'L', -41150=>'L', -41151=>'L', -41152=>'L', -41153=>'L', -41154=>'L', -41155=>'L', -41156=>'L', -41157=>'L', -41158=>'L', -41159=>'L', -41160=>'L', -41161=>'L', -41162=>'L', -41163=>'L', -41164=>'L', -41165=>'L', -41166=>'L', -41167=>'L', -41168=>'L', -41169=>'L', -41170=>'L', -41171=>'L', -41172=>'L', -41173=>'L', -41174=>'L', -41175=>'L', -41176=>'L', -41177=>'L', -41178=>'L', -41179=>'L', -41180=>'L', -41181=>'L', -41182=>'L', -41183=>'L', -41184=>'L', -41185=>'L', -41186=>'L', -41187=>'L', -41188=>'L', -41189=>'L', -41190=>'L', -41191=>'L', -41192=>'L', -41193=>'L', -41194=>'L', -41195=>'L', -41196=>'L', -41197=>'L', -41198=>'L', -41199=>'L', -41200=>'L', -41201=>'L', -41202=>'L', -41203=>'L', -41204=>'L', -41205=>'L', -41206=>'L', -41207=>'L', -41208=>'L', -41209=>'L', -41210=>'L', -41211=>'L', -41212=>'L', -41213=>'L', -41214=>'L', -41215=>'L', -41216=>'L', -41217=>'L', -41218=>'L', -41219=>'L', -41220=>'L', -41221=>'L', -41222=>'L', -41223=>'L', -41224=>'L', -41225=>'L', -41226=>'L', -41227=>'L', -41228=>'L', -41229=>'L', -41230=>'L', -41231=>'L', -41232=>'L', -41233=>'L', -41234=>'L', -41235=>'L', -41236=>'L', -41237=>'L', -41238=>'L', -41239=>'L', -41240=>'L', -41241=>'L', -41242=>'L', -41243=>'L', -41244=>'L', -41245=>'L', -41246=>'L', -41247=>'L', -41248=>'L', -41249=>'L', -41250=>'L', -41251=>'L', -41252=>'L', -41253=>'L', -41254=>'L', -41255=>'L', -41256=>'L', -41257=>'L', -41258=>'L', -41259=>'L', -41260=>'L', -41261=>'L', -41262=>'L', -41263=>'L', -41264=>'L', -41265=>'L', -41266=>'L', -41267=>'L', -41268=>'L', -41269=>'L', -41270=>'L', -41271=>'L', -41272=>'L', -41273=>'L', -41274=>'L', -41275=>'L', -41276=>'L', -41277=>'L', -41278=>'L', -41279=>'L', -41280=>'L', -41281=>'L', -41282=>'L', -41283=>'L', -41284=>'L', -41285=>'L', -41286=>'L', -41287=>'L', -41288=>'L', -41289=>'L', -41290=>'L', -41291=>'L', -41292=>'L', -41293=>'L', -41294=>'L', -41295=>'L', -41296=>'L', -41297=>'L', -41298=>'L', -41299=>'L', -41300=>'L', -41301=>'L', -41302=>'L', -41303=>'L', -41304=>'L', -41305=>'L', -41306=>'L', -41307=>'L', -41308=>'L', -41309=>'L', -41310=>'L', -41311=>'L', -41312=>'L', -41313=>'L', -41314=>'L', -41315=>'L', -41316=>'L', -41317=>'L', -41318=>'L', -41319=>'L', -41320=>'L', -41321=>'L', -41322=>'L', -41323=>'L', -41324=>'L', -41325=>'L', -41326=>'L', -41327=>'L', -41328=>'L', -41329=>'L', -41330=>'L', -41331=>'L', -41332=>'L', -41333=>'L', -41334=>'L', -41335=>'L', -41336=>'L', -41337=>'L', -41338=>'L', -41339=>'L', -41340=>'L', -41341=>'L', -41342=>'L', -41343=>'L', -41344=>'L', -41345=>'L', -41346=>'L', -41347=>'L', -41348=>'L', -41349=>'L', -41350=>'L', -41351=>'L', -41352=>'L', -41353=>'L', -41354=>'L', -41355=>'L', -41356=>'L', -41357=>'L', -41358=>'L', -41359=>'L', -41360=>'L', -41361=>'L', -41362=>'L', -41363=>'L', -41364=>'L', -41365=>'L', -41366=>'L', -41367=>'L', -41368=>'L', -41369=>'L', -41370=>'L', -41371=>'L', -41372=>'L', -41373=>'L', -41374=>'L', -41375=>'L', -41376=>'L', -41377=>'L', -41378=>'L', -41379=>'L', -41380=>'L', -41381=>'L', -41382=>'L', -41383=>'L', -41384=>'L', -41385=>'L', -41386=>'L', -41387=>'L', -41388=>'L', -41389=>'L', -41390=>'L', -41391=>'L', -41392=>'L', -41393=>'L', -41394=>'L', -41395=>'L', -41396=>'L', -41397=>'L', -41398=>'L', -41399=>'L', -41400=>'L', -41401=>'L', -41402=>'L', -41403=>'L', -41404=>'L', -41405=>'L', -41406=>'L', -41407=>'L', -41408=>'L', -41409=>'L', -41410=>'L', -41411=>'L', -41412=>'L', -41413=>'L', -41414=>'L', -41415=>'L', -41416=>'L', -41417=>'L', -41418=>'L', -41419=>'L', -41420=>'L', -41421=>'L', -41422=>'L', -41423=>'L', -41424=>'L', -41425=>'L', -41426=>'L', -41427=>'L', -41428=>'L', -41429=>'L', -41430=>'L', -41431=>'L', -41432=>'L', -41433=>'L', -41434=>'L', -41435=>'L', -41436=>'L', -41437=>'L', -41438=>'L', -41439=>'L', -41440=>'L', -41441=>'L', -41442=>'L', -41443=>'L', -41444=>'L', -41445=>'L', -41446=>'L', -41447=>'L', -41448=>'L', -41449=>'L', -41450=>'L', -41451=>'L', -41452=>'L', -41453=>'L', -41454=>'L', -41455=>'L', -41456=>'L', -41457=>'L', -41458=>'L', -41459=>'L', -41460=>'L', -41461=>'L', -41462=>'L', -41463=>'L', -41464=>'L', -41465=>'L', -41466=>'L', -41467=>'L', -41468=>'L', -41469=>'L', -41470=>'L', -41471=>'L', -41472=>'L', -41473=>'L', -41474=>'L', -41475=>'L', -41476=>'L', -41477=>'L', -41478=>'L', -41479=>'L', -41480=>'L', -41481=>'L', -41482=>'L', -41483=>'L', -41484=>'L', -41485=>'L', -41486=>'L', -41487=>'L', -41488=>'L', -41489=>'L', -41490=>'L', -41491=>'L', -41492=>'L', -41493=>'L', -41494=>'L', -41495=>'L', -41496=>'L', -41497=>'L', -41498=>'L', -41499=>'L', -41500=>'L', -41501=>'L', -41502=>'L', -41503=>'L', -41504=>'L', -41505=>'L', -41506=>'L', -41507=>'L', -41508=>'L', -41509=>'L', -41510=>'L', -41511=>'L', -41512=>'L', -41513=>'L', -41514=>'L', -41515=>'L', -41516=>'L', -41517=>'L', -41518=>'L', -41519=>'L', -41520=>'L', -41521=>'L', -41522=>'L', -41523=>'L', -41524=>'L', -41525=>'L', -41526=>'L', -41527=>'L', -41528=>'L', -41529=>'L', -41530=>'L', -41531=>'L', -41532=>'L', -41533=>'L', -41534=>'L', -41535=>'L', -41536=>'L', -41537=>'L', -41538=>'L', -41539=>'L', -41540=>'L', -41541=>'L', -41542=>'L', -41543=>'L', -41544=>'L', -41545=>'L', -41546=>'L', -41547=>'L', -41548=>'L', -41549=>'L', -41550=>'L', -41551=>'L', -41552=>'L', -41553=>'L', -41554=>'L', -41555=>'L', -41556=>'L', -41557=>'L', -41558=>'L', -41559=>'L', -41560=>'L', -41561=>'L', -41562=>'L', -41563=>'L', -41564=>'L', -41565=>'L', -41566=>'L', -41567=>'L', -41568=>'L', -41569=>'L', -41570=>'L', -41571=>'L', -41572=>'L', -41573=>'L', -41574=>'L', -41575=>'L', -41576=>'L', -41577=>'L', -41578=>'L', -41579=>'L', -41580=>'L', -41581=>'L', -41582=>'L', -41583=>'L', -41584=>'L', -41585=>'L', -41586=>'L', -41587=>'L', -41588=>'L', -41589=>'L', -41590=>'L', -41591=>'L', -41592=>'L', -41593=>'L', -41594=>'L', -41595=>'L', -41596=>'L', -41597=>'L', -41598=>'L', -41599=>'L', -41600=>'L', -41601=>'L', -41602=>'L', -41603=>'L', -41604=>'L', -41605=>'L', -41606=>'L', -41607=>'L', -41608=>'L', -41609=>'L', -41610=>'L', -41611=>'L', -41612=>'L', -41613=>'L', -41614=>'L', -41615=>'L', -41616=>'L', -41617=>'L', -41618=>'L', -41619=>'L', -41620=>'L', -41621=>'L', -41622=>'L', -41623=>'L', -41624=>'L', -41625=>'L', -41626=>'L', -41627=>'L', -41628=>'L', -41629=>'L', -41630=>'L', -41631=>'L', -41632=>'L', -41633=>'L', -41634=>'L', -41635=>'L', -41636=>'L', -41637=>'L', -41638=>'L', -41639=>'L', -41640=>'L', -41641=>'L', -41642=>'L', -41643=>'L', -41644=>'L', -41645=>'L', -41646=>'L', -41647=>'L', -41648=>'L', -41649=>'L', -41650=>'L', -41651=>'L', -41652=>'L', -41653=>'L', -41654=>'L', -41655=>'L', -41656=>'L', -41657=>'L', -41658=>'L', -41659=>'L', -41660=>'L', -41661=>'L', -41662=>'L', -41663=>'L', -41664=>'L', -41665=>'L', -41666=>'L', -41667=>'L', -41668=>'L', -41669=>'L', -41670=>'L', -41671=>'L', -41672=>'L', -41673=>'L', -41674=>'L', -41675=>'L', -41676=>'L', -41677=>'L', -41678=>'L', -41679=>'L', -41680=>'L', -41681=>'L', -41682=>'L', -41683=>'L', -41684=>'L', -41685=>'L', -41686=>'L', -41687=>'L', -41688=>'L', -41689=>'L', -41690=>'L', -41691=>'L', -41692=>'L', -41693=>'L', -41694=>'L', -41695=>'L', -41696=>'L', -41697=>'L', -41698=>'L', -41699=>'L', -41700=>'L', -41701=>'L', -41702=>'L', -41703=>'L', -41704=>'L', -41705=>'L', -41706=>'L', -41707=>'L', -41708=>'L', -41709=>'L', -41710=>'L', -41711=>'L', -41712=>'L', -41713=>'L', -41714=>'L', -41715=>'L', -41716=>'L', -41717=>'L', -41718=>'L', -41719=>'L', -41720=>'L', -41721=>'L', -41722=>'L', -41723=>'L', -41724=>'L', -41725=>'L', -41726=>'L', -41727=>'L', -41728=>'L', -41729=>'L', -41730=>'L', -41731=>'L', -41732=>'L', -41733=>'L', -41734=>'L', -41735=>'L', -41736=>'L', -41737=>'L', -41738=>'L', -41739=>'L', -41740=>'L', -41741=>'L', -41742=>'L', -41743=>'L', -41744=>'L', -41745=>'L', -41746=>'L', -41747=>'L', -41748=>'L', -41749=>'L', -41750=>'L', -41751=>'L', -41752=>'L', -41753=>'L', -41754=>'L', -41755=>'L', -41756=>'L', -41757=>'L', -41758=>'L', -41759=>'L', -41760=>'L', -41761=>'L', -41762=>'L', -41763=>'L', -41764=>'L', -41765=>'L', -41766=>'L', -41767=>'L', -41768=>'L', -41769=>'L', -41770=>'L', -41771=>'L', -41772=>'L', -41773=>'L', -41774=>'L', -41775=>'L', -41776=>'L', -41777=>'L', -41778=>'L', -41779=>'L', -41780=>'L', -41781=>'L', -41782=>'L', -41783=>'L', -41784=>'L', -41785=>'L', -41786=>'L', -41787=>'L', -41788=>'L', -41789=>'L', -41790=>'L', -41791=>'L', -41792=>'L', -41793=>'L', -41794=>'L', -41795=>'L', -41796=>'L', -41797=>'L', -41798=>'L', -41799=>'L', -41800=>'L', -41801=>'L', -41802=>'L', -41803=>'L', -41804=>'L', -41805=>'L', -41806=>'L', -41807=>'L', -41808=>'L', -41809=>'L', -41810=>'L', -41811=>'L', -41812=>'L', -41813=>'L', -41814=>'L', -41815=>'L', -41816=>'L', -41817=>'L', -41818=>'L', -41819=>'L', -41820=>'L', -41821=>'L', -41822=>'L', -41823=>'L', -41824=>'L', -41825=>'L', -41826=>'L', -41827=>'L', -41828=>'L', -41829=>'L', -41830=>'L', -41831=>'L', -41832=>'L', -41833=>'L', -41834=>'L', -41835=>'L', -41836=>'L', -41837=>'L', -41838=>'L', -41839=>'L', -41840=>'L', -41841=>'L', -41842=>'L', -41843=>'L', -41844=>'L', -41845=>'L', -41846=>'L', -41847=>'L', -41848=>'L', -41849=>'L', -41850=>'L', -41851=>'L', -41852=>'L', -41853=>'L', -41854=>'L', -41855=>'L', -41856=>'L', -41857=>'L', -41858=>'L', -41859=>'L', -41860=>'L', -41861=>'L', -41862=>'L', -41863=>'L', -41864=>'L', -41865=>'L', -41866=>'L', -41867=>'L', -41868=>'L', -41869=>'L', -41870=>'L', -41871=>'L', -41872=>'L', -41873=>'L', -41874=>'L', -41875=>'L', -41876=>'L', -41877=>'L', -41878=>'L', -41879=>'L', -41880=>'L', -41881=>'L', -41882=>'L', -41883=>'L', -41884=>'L', -41885=>'L', -41886=>'L', -41887=>'L', -41888=>'L', -41889=>'L', -41890=>'L', -41891=>'L', -41892=>'L', -41893=>'L', -41894=>'L', -41895=>'L', -41896=>'L', -41897=>'L', -41898=>'L', -41899=>'L', -41900=>'L', -41901=>'L', -41902=>'L', -41903=>'L', -41904=>'L', -41905=>'L', -41906=>'L', -41907=>'L', -41908=>'L', -41909=>'L', -41910=>'L', -41911=>'L', -41912=>'L', -41913=>'L', -41914=>'L', -41915=>'L', -41916=>'L', -41917=>'L', -41918=>'L', -41919=>'L', -41920=>'L', -41921=>'L', -41922=>'L', -41923=>'L', -41924=>'L', -41925=>'L', -41926=>'L', -41927=>'L', -41928=>'L', -41929=>'L', -41930=>'L', -41931=>'L', -41932=>'L', -41933=>'L', -41934=>'L', -41935=>'L', -41936=>'L', -41937=>'L', -41938=>'L', -41939=>'L', -41940=>'L', -41941=>'L', -41942=>'L', -41943=>'L', -41944=>'L', -41945=>'L', -41946=>'L', -41947=>'L', -41948=>'L', -41949=>'L', -41950=>'L', -41951=>'L', -41952=>'L', -41953=>'L', -41954=>'L', -41955=>'L', -41956=>'L', -41957=>'L', -41958=>'L', -41959=>'L', -41960=>'L', -41961=>'L', -41962=>'L', -41963=>'L', -41964=>'L', -41965=>'L', -41966=>'L', -41967=>'L', -41968=>'L', -41969=>'L', -41970=>'L', -41971=>'L', -41972=>'L', -41973=>'L', -41974=>'L', -41975=>'L', -41976=>'L', -41977=>'L', -41978=>'L', -41979=>'L', -41980=>'L', -41981=>'L', -41982=>'L', -41983=>'L', -41984=>'L', -41985=>'L', -41986=>'L', -41987=>'L', -41988=>'L', -41989=>'L', -41990=>'L', -41991=>'L', -41992=>'L', -41993=>'L', -41994=>'L', -41995=>'L', -41996=>'L', -41997=>'L', -41998=>'L', -41999=>'L', -42000=>'L', -42001=>'L', -42002=>'L', -42003=>'L', -42004=>'L', -42005=>'L', -42006=>'L', -42007=>'L', -42008=>'L', -42009=>'L', -42010=>'L', -42011=>'L', -42012=>'L', -42013=>'L', -42014=>'L', -42015=>'L', -42016=>'L', -42017=>'L', -42018=>'L', -42019=>'L', -42020=>'L', -42021=>'L', -42022=>'L', -42023=>'L', -42024=>'L', -42025=>'L', -42026=>'L', -42027=>'L', -42028=>'L', -42029=>'L', -42030=>'L', -42031=>'L', -42032=>'L', -42033=>'L', -42034=>'L', -42035=>'L', -42036=>'L', -42037=>'L', -42038=>'L', -42039=>'L', -42040=>'L', -42041=>'L', -42042=>'L', -42043=>'L', -42044=>'L', -42045=>'L', -42046=>'L', -42047=>'L', -42048=>'L', -42049=>'L', -42050=>'L', -42051=>'L', -42052=>'L', -42053=>'L', -42054=>'L', -42055=>'L', -42056=>'L', -42057=>'L', -42058=>'L', -42059=>'L', -42060=>'L', -42061=>'L', -42062=>'L', -42063=>'L', -42064=>'L', -42065=>'L', -42066=>'L', -42067=>'L', -42068=>'L', -42069=>'L', -42070=>'L', -42071=>'L', -42072=>'L', -42073=>'L', -42074=>'L', -42075=>'L', -42076=>'L', -42077=>'L', -42078=>'L', -42079=>'L', -42080=>'L', -42081=>'L', -42082=>'L', -42083=>'L', -42084=>'L', -42085=>'L', -42086=>'L', -42087=>'L', -42088=>'L', -42089=>'L', -42090=>'L', -42091=>'L', -42092=>'L', -42093=>'L', -42094=>'L', -42095=>'L', -42096=>'L', -42097=>'L', -42098=>'L', -42099=>'L', -42100=>'L', -42101=>'L', -42102=>'L', -42103=>'L', -42104=>'L', -42105=>'L', -42106=>'L', -42107=>'L', -42108=>'L', -42109=>'L', -42110=>'L', -42111=>'L', -42112=>'L', -42113=>'L', -42114=>'L', -42115=>'L', -42116=>'L', -42117=>'L', -42118=>'L', -42119=>'L', -42120=>'L', -42121=>'L', -42122=>'L', -42123=>'L', -42124=>'L', -42128=>'ON', -42129=>'ON', -42130=>'ON', -42131=>'ON', -42132=>'ON', -42133=>'ON', -42134=>'ON', -42135=>'ON', -42136=>'ON', -42137=>'ON', -42138=>'ON', -42139=>'ON', -42140=>'ON', -42141=>'ON', -42142=>'ON', -42143=>'ON', -42144=>'ON', -42145=>'ON', -42146=>'ON', -42147=>'ON', -42148=>'ON', -42149=>'ON', -42150=>'ON', -42151=>'ON', -42152=>'ON', -42153=>'ON', -42154=>'ON', -42155=>'ON', -42156=>'ON', -42157=>'ON', -42158=>'ON', -42159=>'ON', -42160=>'ON', -42161=>'ON', -42162=>'ON', -42163=>'ON', -42164=>'ON', -42165=>'ON', -42166=>'ON', -42167=>'ON', -42168=>'ON', -42169=>'ON', -42170=>'ON', -42171=>'ON', -42172=>'ON', -42173=>'ON', -42174=>'ON', -42175=>'ON', -42176=>'ON', -42177=>'ON', -42178=>'ON', -42179=>'ON', -42180=>'ON', -42181=>'ON', -42182=>'ON', -42752=>'ON', -42753=>'ON', -42754=>'ON', -42755=>'ON', -42756=>'ON', -42757=>'ON', -42758=>'ON', -42759=>'ON', -42760=>'ON', -42761=>'ON', -42762=>'ON', -42763=>'ON', -42764=>'ON', -42765=>'ON', -42766=>'ON', -42767=>'ON', -42768=>'ON', -42769=>'ON', -42770=>'ON', -42771=>'ON', -42772=>'ON', -42773=>'ON', -42774=>'ON', -42775=>'ON', -42776=>'ON', -42777=>'ON', -42778=>'ON', -42784=>'ON', -42785=>'ON', -43008=>'L', -43009=>'L', -43010=>'NSM', -43011=>'L', -43012=>'L', -43013=>'L', -43014=>'NSM', -43015=>'L', -43016=>'L', -43017=>'L', -43018=>'L', -43019=>'NSM', -43020=>'L', -43021=>'L', -43022=>'L', -43023=>'L', -43024=>'L', -43025=>'L', -43026=>'L', -43027=>'L', -43028=>'L', -43029=>'L', -43030=>'L', -43031=>'L', -43032=>'L', -43033=>'L', -43034=>'L', -43035=>'L', -43036=>'L', -43037=>'L', -43038=>'L', -43039=>'L', -43040=>'L', -43041=>'L', -43042=>'L', -43043=>'L', -43044=>'L', -43045=>'NSM', -43046=>'NSM', -43047=>'L', -43048=>'ON', -43049=>'ON', -43050=>'ON', -43051=>'ON', -43072=>'L', -43073=>'L', -43074=>'L', -43075=>'L', -43076=>'L', -43077=>'L', -43078=>'L', -43079=>'L', -43080=>'L', -43081=>'L', -43082=>'L', -43083=>'L', -43084=>'L', -43085=>'L', -43086=>'L', -43087=>'L', -43088=>'L', -43089=>'L', -43090=>'L', -43091=>'L', -43092=>'L', -43093=>'L', -43094=>'L', -43095=>'L', -43096=>'L', -43097=>'L', -43098=>'L', -43099=>'L', -43100=>'L', -43101=>'L', -43102=>'L', -43103=>'L', -43104=>'L', -43105=>'L', -43106=>'L', -43107=>'L', -43108=>'L', -43109=>'L', -43110=>'L', -43111=>'L', -43112=>'L', -43113=>'L', -43114=>'L', -43115=>'L', -43116=>'L', -43117=>'L', -43118=>'L', -43119=>'L', -43120=>'L', -43121=>'L', -43122=>'L', -43123=>'L', -43124=>'ON', -43125=>'ON', -43126=>'ON', -43127=>'ON', -44032=>'L', -55203=>'L', -55296=>'L', -56191=>'L', -56192=>'L', -56319=>'L', -56320=>'L', -57343=>'L', -57344=>'L', -63743=>'L', -63744=>'L', -63745=>'L', -63746=>'L', -63747=>'L', -63748=>'L', -63749=>'L', -63750=>'L', -63751=>'L', -63752=>'L', -63753=>'L', -63754=>'L', -63755=>'L', -63756=>'L', -63757=>'L', -63758=>'L', -63759=>'L', -63760=>'L', -63761=>'L', -63762=>'L', -63763=>'L', -63764=>'L', -63765=>'L', -63766=>'L', -63767=>'L', -63768=>'L', -63769=>'L', -63770=>'L', -63771=>'L', -63772=>'L', -63773=>'L', -63774=>'L', -63775=>'L', -63776=>'L', -63777=>'L', -63778=>'L', -63779=>'L', -63780=>'L', -63781=>'L', -63782=>'L', -63783=>'L', -63784=>'L', -63785=>'L', -63786=>'L', -63787=>'L', -63788=>'L', -63789=>'L', -63790=>'L', -63791=>'L', -63792=>'L', -63793=>'L', -63794=>'L', -63795=>'L', -63796=>'L', -63797=>'L', -63798=>'L', -63799=>'L', -63800=>'L', -63801=>'L', -63802=>'L', -63803=>'L', -63804=>'L', -63805=>'L', -63806=>'L', -63807=>'L', -63808=>'L', -63809=>'L', -63810=>'L', -63811=>'L', -63812=>'L', -63813=>'L', -63814=>'L', -63815=>'L', -63816=>'L', -63817=>'L', -63818=>'L', -63819=>'L', -63820=>'L', -63821=>'L', -63822=>'L', -63823=>'L', -63824=>'L', -63825=>'L', -63826=>'L', -63827=>'L', -63828=>'L', -63829=>'L', -63830=>'L', -63831=>'L', -63832=>'L', -63833=>'L', -63834=>'L', -63835=>'L', -63836=>'L', -63837=>'L', -63838=>'L', -63839=>'L', -63840=>'L', -63841=>'L', -63842=>'L', -63843=>'L', -63844=>'L', -63845=>'L', -63846=>'L', -63847=>'L', -63848=>'L', -63849=>'L', -63850=>'L', -63851=>'L', -63852=>'L', -63853=>'L', -63854=>'L', -63855=>'L', -63856=>'L', -63857=>'L', -63858=>'L', -63859=>'L', -63860=>'L', -63861=>'L', -63862=>'L', -63863=>'L', -63864=>'L', -63865=>'L', -63866=>'L', -63867=>'L', -63868=>'L', -63869=>'L', -63870=>'L', -63871=>'L', -63872=>'L', -63873=>'L', -63874=>'L', -63875=>'L', -63876=>'L', -63877=>'L', -63878=>'L', -63879=>'L', -63880=>'L', -63881=>'L', -63882=>'L', -63883=>'L', -63884=>'L', -63885=>'L', -63886=>'L', -63887=>'L', -63888=>'L', -63889=>'L', -63890=>'L', -63891=>'L', -63892=>'L', -63893=>'L', -63894=>'L', -63895=>'L', -63896=>'L', -63897=>'L', -63898=>'L', -63899=>'L', -63900=>'L', -63901=>'L', -63902=>'L', -63903=>'L', -63904=>'L', -63905=>'L', -63906=>'L', -63907=>'L', -63908=>'L', -63909=>'L', -63910=>'L', -63911=>'L', -63912=>'L', -63913=>'L', -63914=>'L', -63915=>'L', -63916=>'L', -63917=>'L', -63918=>'L', -63919=>'L', -63920=>'L', -63921=>'L', -63922=>'L', -63923=>'L', -63924=>'L', -63925=>'L', -63926=>'L', -63927=>'L', -63928=>'L', -63929=>'L', -63930=>'L', -63931=>'L', -63932=>'L', -63933=>'L', -63934=>'L', -63935=>'L', -63936=>'L', -63937=>'L', -63938=>'L', -63939=>'L', -63940=>'L', -63941=>'L', -63942=>'L', -63943=>'L', -63944=>'L', -63945=>'L', -63946=>'L', -63947=>'L', -63948=>'L', -63949=>'L', -63950=>'L', -63951=>'L', -63952=>'L', -63953=>'L', -63954=>'L', -63955=>'L', -63956=>'L', -63957=>'L', -63958=>'L', -63959=>'L', -63960=>'L', -63961=>'L', -63962=>'L', -63963=>'L', -63964=>'L', -63965=>'L', -63966=>'L', -63967=>'L', -63968=>'L', -63969=>'L', -63970=>'L', -63971=>'L', -63972=>'L', -63973=>'L', -63974=>'L', -63975=>'L', -63976=>'L', -63977=>'L', -63978=>'L', -63979=>'L', -63980=>'L', -63981=>'L', -63982=>'L', -63983=>'L', -63984=>'L', -63985=>'L', -63986=>'L', -63987=>'L', -63988=>'L', -63989=>'L', -63990=>'L', -63991=>'L', -63992=>'L', -63993=>'L', -63994=>'L', -63995=>'L', -63996=>'L', -63997=>'L', -63998=>'L', -63999=>'L', -64000=>'L', -64001=>'L', -64002=>'L', -64003=>'L', -64004=>'L', -64005=>'L', -64006=>'L', -64007=>'L', -64008=>'L', -64009=>'L', -64010=>'L', -64011=>'L', -64012=>'L', -64013=>'L', -64014=>'L', -64015=>'L', -64016=>'L', -64017=>'L', -64018=>'L', -64019=>'L', -64020=>'L', -64021=>'L', -64022=>'L', -64023=>'L', -64024=>'L', -64025=>'L', -64026=>'L', -64027=>'L', -64028=>'L', -64029=>'L', -64030=>'L', -64031=>'L', -64032=>'L', -64033=>'L', -64034=>'L', -64035=>'L', -64036=>'L', -64037=>'L', -64038=>'L', -64039=>'L', -64040=>'L', -64041=>'L', -64042=>'L', -64043=>'L', -64044=>'L', -64045=>'L', -64048=>'L', -64049=>'L', -64050=>'L', -64051=>'L', -64052=>'L', -64053=>'L', -64054=>'L', -64055=>'L', -64056=>'L', -64057=>'L', -64058=>'L', -64059=>'L', -64060=>'L', -64061=>'L', -64062=>'L', -64063=>'L', -64064=>'L', -64065=>'L', -64066=>'L', -64067=>'L', -64068=>'L', -64069=>'L', -64070=>'L', -64071=>'L', -64072=>'L', -64073=>'L', -64074=>'L', -64075=>'L', -64076=>'L', -64077=>'L', -64078=>'L', -64079=>'L', -64080=>'L', -64081=>'L', -64082=>'L', -64083=>'L', -64084=>'L', -64085=>'L', -64086=>'L', -64087=>'L', -64088=>'L', -64089=>'L', -64090=>'L', -64091=>'L', -64092=>'L', -64093=>'L', -64094=>'L', -64095=>'L', -64096=>'L', -64097=>'L', -64098=>'L', -64099=>'L', -64100=>'L', -64101=>'L', -64102=>'L', -64103=>'L', -64104=>'L', -64105=>'L', -64106=>'L', -64112=>'L', -64113=>'L', -64114=>'L', -64115=>'L', -64116=>'L', -64117=>'L', -64118=>'L', -64119=>'L', -64120=>'L', -64121=>'L', -64122=>'L', -64123=>'L', -64124=>'L', -64125=>'L', -64126=>'L', -64127=>'L', -64128=>'L', -64129=>'L', -64130=>'L', -64131=>'L', -64132=>'L', -64133=>'L', -64134=>'L', -64135=>'L', -64136=>'L', -64137=>'L', -64138=>'L', -64139=>'L', -64140=>'L', -64141=>'L', -64142=>'L', -64143=>'L', -64144=>'L', -64145=>'L', -64146=>'L', -64147=>'L', -64148=>'L', -64149=>'L', -64150=>'L', -64151=>'L', -64152=>'L', -64153=>'L', -64154=>'L', -64155=>'L', -64156=>'L', -64157=>'L', -64158=>'L', -64159=>'L', -64160=>'L', -64161=>'L', -64162=>'L', -64163=>'L', -64164=>'L', -64165=>'L', -64166=>'L', -64167=>'L', -64168=>'L', -64169=>'L', -64170=>'L', -64171=>'L', -64172=>'L', -64173=>'L', -64174=>'L', -64175=>'L', -64176=>'L', -64177=>'L', -64178=>'L', -64179=>'L', -64180=>'L', -64181=>'L', -64182=>'L', -64183=>'L', -64184=>'L', -64185=>'L', -64186=>'L', -64187=>'L', -64188=>'L', -64189=>'L', -64190=>'L', -64191=>'L', -64192=>'L', -64193=>'L', -64194=>'L', -64195=>'L', -64196=>'L', -64197=>'L', -64198=>'L', -64199=>'L', -64200=>'L', -64201=>'L', -64202=>'L', -64203=>'L', -64204=>'L', -64205=>'L', -64206=>'L', -64207=>'L', -64208=>'L', -64209=>'L', -64210=>'L', -64211=>'L', -64212=>'L', -64213=>'L', -64214=>'L', -64215=>'L', -64216=>'L', -64217=>'L', -64256=>'L', -64257=>'L', -64258=>'L', -64259=>'L', -64260=>'L', -64261=>'L', -64262=>'L', -64275=>'L', -64276=>'L', -64277=>'L', -64278=>'L', -64279=>'L', -64285=>'R', -64286=>'NSM', -64287=>'R', -64288=>'R', -64289=>'R', -64290=>'R', -64291=>'R', -64292=>'R', -64293=>'R', -64294=>'R', -64295=>'R', -64296=>'R', -64297=>'ES', -64298=>'R', -64299=>'R', -64300=>'R', -64301=>'R', -64302=>'R', -64303=>'R', -64304=>'R', -64305=>'R', -64306=>'R', -64307=>'R', -64308=>'R', -64309=>'R', -64310=>'R', -64312=>'R', -64313=>'R', -64314=>'R', -64315=>'R', -64316=>'R', -64318=>'R', -64320=>'R', -64321=>'R', -64323=>'R', -64324=>'R', -64326=>'R', -64327=>'R', -64328=>'R', -64329=>'R', -64330=>'R', -64331=>'R', -64332=>'R', -64333=>'R', -64334=>'R', -64335=>'R', -64336=>'AL', -64337=>'AL', -64338=>'AL', -64339=>'AL', -64340=>'AL', -64341=>'AL', -64342=>'AL', -64343=>'AL', -64344=>'AL', -64345=>'AL', -64346=>'AL', -64347=>'AL', -64348=>'AL', -64349=>'AL', -64350=>'AL', -64351=>'AL', -64352=>'AL', -64353=>'AL', -64354=>'AL', -64355=>'AL', -64356=>'AL', -64357=>'AL', -64358=>'AL', -64359=>'AL', -64360=>'AL', -64361=>'AL', -64362=>'AL', -64363=>'AL', -64364=>'AL', -64365=>'AL', -64366=>'AL', -64367=>'AL', -64368=>'AL', -64369=>'AL', -64370=>'AL', -64371=>'AL', -64372=>'AL', -64373=>'AL', -64374=>'AL', -64375=>'AL', -64376=>'AL', -64377=>'AL', -64378=>'AL', -64379=>'AL', -64380=>'AL', -64381=>'AL', -64382=>'AL', -64383=>'AL', -64384=>'AL', -64385=>'AL', -64386=>'AL', -64387=>'AL', -64388=>'AL', -64389=>'AL', -64390=>'AL', -64391=>'AL', -64392=>'AL', -64393=>'AL', -64394=>'AL', -64395=>'AL', -64396=>'AL', -64397=>'AL', -64398=>'AL', -64399=>'AL', -64400=>'AL', -64401=>'AL', -64402=>'AL', -64403=>'AL', -64404=>'AL', -64405=>'AL', -64406=>'AL', -64407=>'AL', -64408=>'AL', -64409=>'AL', -64410=>'AL', -64411=>'AL', -64412=>'AL', -64413=>'AL', -64414=>'AL', -64415=>'AL', -64416=>'AL', -64417=>'AL', -64418=>'AL', -64419=>'AL', -64420=>'AL', -64421=>'AL', -64422=>'AL', -64423=>'AL', -64424=>'AL', -64425=>'AL', -64426=>'AL', -64427=>'AL', -64428=>'AL', -64429=>'AL', -64430=>'AL', -64431=>'AL', -64432=>'AL', -64433=>'AL', -64467=>'AL', -64468=>'AL', -64469=>'AL', -64470=>'AL', -64471=>'AL', -64472=>'AL', -64473=>'AL', -64474=>'AL', -64475=>'AL', -64476=>'AL', -64477=>'AL', -64478=>'AL', -64479=>'AL', -64480=>'AL', -64481=>'AL', -64482=>'AL', -64483=>'AL', -64484=>'AL', -64485=>'AL', -64486=>'AL', -64487=>'AL', -64488=>'AL', -64489=>'AL', -64490=>'AL', -64491=>'AL', -64492=>'AL', -64493=>'AL', -64494=>'AL', -64495=>'AL', -64496=>'AL', -64497=>'AL', -64498=>'AL', -64499=>'AL', -64500=>'AL', -64501=>'AL', -64502=>'AL', -64503=>'AL', -64504=>'AL', -64505=>'AL', -64506=>'AL', -64507=>'AL', -64508=>'AL', -64509=>'AL', -64510=>'AL', -64511=>'AL', -64512=>'AL', -64513=>'AL', -64514=>'AL', -64515=>'AL', -64516=>'AL', -64517=>'AL', -64518=>'AL', -64519=>'AL', -64520=>'AL', -64521=>'AL', -64522=>'AL', -64523=>'AL', -64524=>'AL', -64525=>'AL', -64526=>'AL', -64527=>'AL', -64528=>'AL', -64529=>'AL', -64530=>'AL', -64531=>'AL', -64532=>'AL', -64533=>'AL', -64534=>'AL', -64535=>'AL', -64536=>'AL', -64537=>'AL', -64538=>'AL', -64539=>'AL', -64540=>'AL', -64541=>'AL', -64542=>'AL', -64543=>'AL', -64544=>'AL', -64545=>'AL', -64546=>'AL', -64547=>'AL', -64548=>'AL', -64549=>'AL', -64550=>'AL', -64551=>'AL', -64552=>'AL', -64553=>'AL', -64554=>'AL', -64555=>'AL', -64556=>'AL', -64557=>'AL', -64558=>'AL', -64559=>'AL', -64560=>'AL', -64561=>'AL', -64562=>'AL', -64563=>'AL', -64564=>'AL', -64565=>'AL', -64566=>'AL', -64567=>'AL', -64568=>'AL', -64569=>'AL', -64570=>'AL', -64571=>'AL', -64572=>'AL', -64573=>'AL', -64574=>'AL', -64575=>'AL', -64576=>'AL', -64577=>'AL', -64578=>'AL', -64579=>'AL', -64580=>'AL', -64581=>'AL', -64582=>'AL', -64583=>'AL', -64584=>'AL', -64585=>'AL', -64586=>'AL', -64587=>'AL', -64588=>'AL', -64589=>'AL', -64590=>'AL', -64591=>'AL', -64592=>'AL', -64593=>'AL', -64594=>'AL', -64595=>'AL', -64596=>'AL', -64597=>'AL', -64598=>'AL', -64599=>'AL', -64600=>'AL', -64601=>'AL', -64602=>'AL', -64603=>'AL', -64604=>'AL', -64605=>'AL', -64606=>'AL', -64607=>'AL', -64608=>'AL', -64609=>'AL', -64610=>'AL', -64611=>'AL', -64612=>'AL', -64613=>'AL', -64614=>'AL', -64615=>'AL', -64616=>'AL', -64617=>'AL', -64618=>'AL', -64619=>'AL', -64620=>'AL', -64621=>'AL', -64622=>'AL', -64623=>'AL', -64624=>'AL', -64625=>'AL', -64626=>'AL', -64627=>'AL', -64628=>'AL', -64629=>'AL', -64630=>'AL', -64631=>'AL', -64632=>'AL', -64633=>'AL', -64634=>'AL', -64635=>'AL', -64636=>'AL', -64637=>'AL', -64638=>'AL', -64639=>'AL', -64640=>'AL', -64641=>'AL', -64642=>'AL', -64643=>'AL', -64644=>'AL', -64645=>'AL', -64646=>'AL', -64647=>'AL', -64648=>'AL', -64649=>'AL', -64650=>'AL', -64651=>'AL', -64652=>'AL', -64653=>'AL', -64654=>'AL', -64655=>'AL', -64656=>'AL', -64657=>'AL', -64658=>'AL', -64659=>'AL', -64660=>'AL', -64661=>'AL', -64662=>'AL', -64663=>'AL', -64664=>'AL', -64665=>'AL', -64666=>'AL', -64667=>'AL', -64668=>'AL', -64669=>'AL', -64670=>'AL', -64671=>'AL', -64672=>'AL', -64673=>'AL', -64674=>'AL', -64675=>'AL', -64676=>'AL', -64677=>'AL', -64678=>'AL', -64679=>'AL', -64680=>'AL', -64681=>'AL', -64682=>'AL', -64683=>'AL', -64684=>'AL', -64685=>'AL', -64686=>'AL', -64687=>'AL', -64688=>'AL', -64689=>'AL', -64690=>'AL', -64691=>'AL', -64692=>'AL', -64693=>'AL', -64694=>'AL', -64695=>'AL', -64696=>'AL', -64697=>'AL', -64698=>'AL', -64699=>'AL', -64700=>'AL', -64701=>'AL', -64702=>'AL', -64703=>'AL', -64704=>'AL', -64705=>'AL', -64706=>'AL', -64707=>'AL', -64708=>'AL', -64709=>'AL', -64710=>'AL', -64711=>'AL', -64712=>'AL', -64713=>'AL', -64714=>'AL', -64715=>'AL', -64716=>'AL', -64717=>'AL', -64718=>'AL', -64719=>'AL', -64720=>'AL', -64721=>'AL', -64722=>'AL', -64723=>'AL', -64724=>'AL', -64725=>'AL', -64726=>'AL', -64727=>'AL', -64728=>'AL', -64729=>'AL', -64730=>'AL', -64731=>'AL', -64732=>'AL', -64733=>'AL', -64734=>'AL', -64735=>'AL', -64736=>'AL', -64737=>'AL', -64738=>'AL', -64739=>'AL', -64740=>'AL', -64741=>'AL', -64742=>'AL', -64743=>'AL', -64744=>'AL', -64745=>'AL', -64746=>'AL', -64747=>'AL', -64748=>'AL', -64749=>'AL', -64750=>'AL', -64751=>'AL', -64752=>'AL', -64753=>'AL', -64754=>'AL', -64755=>'AL', -64756=>'AL', -64757=>'AL', -64758=>'AL', -64759=>'AL', -64760=>'AL', -64761=>'AL', -64762=>'AL', -64763=>'AL', -64764=>'AL', -64765=>'AL', -64766=>'AL', -64767=>'AL', -64768=>'AL', -64769=>'AL', -64770=>'AL', -64771=>'AL', -64772=>'AL', -64773=>'AL', -64774=>'AL', -64775=>'AL', -64776=>'AL', -64777=>'AL', -64778=>'AL', -64779=>'AL', -64780=>'AL', -64781=>'AL', -64782=>'AL', -64783=>'AL', -64784=>'AL', -64785=>'AL', -64786=>'AL', -64787=>'AL', -64788=>'AL', -64789=>'AL', -64790=>'AL', -64791=>'AL', -64792=>'AL', -64793=>'AL', -64794=>'AL', -64795=>'AL', -64796=>'AL', -64797=>'AL', -64798=>'AL', -64799=>'AL', -64800=>'AL', -64801=>'AL', -64802=>'AL', -64803=>'AL', -64804=>'AL', -64805=>'AL', -64806=>'AL', -64807=>'AL', -64808=>'AL', -64809=>'AL', -64810=>'AL', -64811=>'AL', -64812=>'AL', -64813=>'AL', -64814=>'AL', -64815=>'AL', -64816=>'AL', -64817=>'AL', -64818=>'AL', -64819=>'AL', -64820=>'AL', -64821=>'AL', -64822=>'AL', -64823=>'AL', -64824=>'AL', -64825=>'AL', -64826=>'AL', -64827=>'AL', -64828=>'AL', -64829=>'AL', -64830=>'ON', -64831=>'ON', -64848=>'AL', -64849=>'AL', -64850=>'AL', -64851=>'AL', -64852=>'AL', -64853=>'AL', -64854=>'AL', -64855=>'AL', -64856=>'AL', -64857=>'AL', -64858=>'AL', -64859=>'AL', -64860=>'AL', -64861=>'AL', -64862=>'AL', -64863=>'AL', -64864=>'AL', -64865=>'AL', -64866=>'AL', -64867=>'AL', -64868=>'AL', -64869=>'AL', -64870=>'AL', -64871=>'AL', -64872=>'AL', -64873=>'AL', -64874=>'AL', -64875=>'AL', -64876=>'AL', -64877=>'AL', -64878=>'AL', -64879=>'AL', -64880=>'AL', -64881=>'AL', -64882=>'AL', -64883=>'AL', -64884=>'AL', -64885=>'AL', -64886=>'AL', -64887=>'AL', -64888=>'AL', -64889=>'AL', -64890=>'AL', -64891=>'AL', -64892=>'AL', -64893=>'AL', -64894=>'AL', -64895=>'AL', -64896=>'AL', -64897=>'AL', -64898=>'AL', -64899=>'AL', -64900=>'AL', -64901=>'AL', -64902=>'AL', -64903=>'AL', -64904=>'AL', -64905=>'AL', -64906=>'AL', -64907=>'AL', -64908=>'AL', -64909=>'AL', -64910=>'AL', -64911=>'AL', -64914=>'AL', -64915=>'AL', -64916=>'AL', -64917=>'AL', -64918=>'AL', -64919=>'AL', -64920=>'AL', -64921=>'AL', -64922=>'AL', -64923=>'AL', -64924=>'AL', -64925=>'AL', -64926=>'AL', -64927=>'AL', -64928=>'AL', -64929=>'AL', -64930=>'AL', -64931=>'AL', -64932=>'AL', -64933=>'AL', -64934=>'AL', -64935=>'AL', -64936=>'AL', -64937=>'AL', -64938=>'AL', -64939=>'AL', -64940=>'AL', -64941=>'AL', -64942=>'AL', -64943=>'AL', -64944=>'AL', -64945=>'AL', -64946=>'AL', -64947=>'AL', -64948=>'AL', -64949=>'AL', -64950=>'AL', -64951=>'AL', -64952=>'AL', -64953=>'AL', -64954=>'AL', -64955=>'AL', -64956=>'AL', -64957=>'AL', -64958=>'AL', -64959=>'AL', -64960=>'AL', -64961=>'AL', -64962=>'AL', -64963=>'AL', -64964=>'AL', -64965=>'AL', -64966=>'AL', -64967=>'AL', -65008=>'AL', -65009=>'AL', -65010=>'AL', -65011=>'AL', -65012=>'AL', -65013=>'AL', -65014=>'AL', -65015=>'AL', -65016=>'AL', -65017=>'AL', -65018=>'AL', -65019=>'AL', -65020=>'AL', -65021=>'ON', -65024=>'NSM', -65025=>'NSM', -65026=>'NSM', -65027=>'NSM', -65028=>'NSM', -65029=>'NSM', -65030=>'NSM', -65031=>'NSM', -65032=>'NSM', -65033=>'NSM', -65034=>'NSM', -65035=>'NSM', -65036=>'NSM', -65037=>'NSM', -65038=>'NSM', -65039=>'NSM', -65040=>'ON', -65041=>'ON', -65042=>'ON', -65043=>'ON', -65044=>'ON', -65045=>'ON', -65046=>'ON', -65047=>'ON', -65048=>'ON', -65049=>'ON', -65056=>'NSM', -65057=>'NSM', -65058=>'NSM', -65059=>'NSM', -65072=>'ON', -65073=>'ON', -65074=>'ON', -65075=>'ON', -65076=>'ON', -65077=>'ON', -65078=>'ON', -65079=>'ON', -65080=>'ON', -65081=>'ON', -65082=>'ON', -65083=>'ON', -65084=>'ON', -65085=>'ON', -65086=>'ON', -65087=>'ON', -65088=>'ON', -65089=>'ON', -65090=>'ON', -65091=>'ON', -65092=>'ON', -65093=>'ON', -65094=>'ON', -65095=>'ON', -65096=>'ON', -65097=>'ON', -65098=>'ON', -65099=>'ON', -65100=>'ON', -65101=>'ON', -65102=>'ON', -65103=>'ON', -65104=>'CS', -65105=>'ON', -65106=>'CS', -65108=>'ON', -65109=>'CS', -65110=>'ON', -65111=>'ON', -65112=>'ON', -65113=>'ON', -65114=>'ON', -65115=>'ON', -65116=>'ON', -65117=>'ON', -65118=>'ON', -65119=>'ET', -65120=>'ON', -65121=>'ON', -65122=>'ES', -65123=>'ES', -65124=>'ON', -65125=>'ON', -65126=>'ON', -65128=>'ON', -65129=>'ET', -65130=>'ET', -65131=>'ON', -65136=>'AL', -65137=>'AL', -65138=>'AL', -65139=>'AL', -65140=>'AL', -65142=>'AL', -65143=>'AL', -65144=>'AL', -65145=>'AL', -65146=>'AL', -65147=>'AL', -65148=>'AL', -65149=>'AL', -65150=>'AL', -65151=>'AL', -65152=>'AL', -65153=>'AL', -65154=>'AL', -65155=>'AL', -65156=>'AL', -65157=>'AL', -65158=>'AL', -65159=>'AL', -65160=>'AL', -65161=>'AL', -65162=>'AL', -65163=>'AL', -65164=>'AL', -65165=>'AL', -65166=>'AL', -65167=>'AL', -65168=>'AL', -65169=>'AL', -65170=>'AL', -65171=>'AL', -65172=>'AL', -65173=>'AL', -65174=>'AL', -65175=>'AL', -65176=>'AL', -65177=>'AL', -65178=>'AL', -65179=>'AL', -65180=>'AL', -65181=>'AL', -65182=>'AL', -65183=>'AL', -65184=>'AL', -65185=>'AL', -65186=>'AL', -65187=>'AL', -65188=>'AL', -65189=>'AL', -65190=>'AL', -65191=>'AL', -65192=>'AL', -65193=>'AL', -65194=>'AL', -65195=>'AL', -65196=>'AL', -65197=>'AL', -65198=>'AL', -65199=>'AL', -65200=>'AL', -65201=>'AL', -65202=>'AL', -65203=>'AL', -65204=>'AL', -65205=>'AL', -65206=>'AL', -65207=>'AL', -65208=>'AL', -65209=>'AL', -65210=>'AL', -65211=>'AL', -65212=>'AL', -65213=>'AL', -65214=>'AL', -65215=>'AL', -65216=>'AL', -65217=>'AL', -65218=>'AL', -65219=>'AL', -65220=>'AL', -65221=>'AL', -65222=>'AL', -65223=>'AL', -65224=>'AL', -65225=>'AL', -65226=>'AL', -65227=>'AL', -65228=>'AL', -65229=>'AL', -65230=>'AL', -65231=>'AL', -65232=>'AL', -65233=>'AL', -65234=>'AL', -65235=>'AL', -65236=>'AL', -65237=>'AL', -65238=>'AL', -65239=>'AL', -65240=>'AL', -65241=>'AL', -65242=>'AL', -65243=>'AL', -65244=>'AL', -65245=>'AL', -65246=>'AL', -65247=>'AL', -65248=>'AL', -65249=>'AL', -65250=>'AL', -65251=>'AL', -65252=>'AL', -65253=>'AL', -65254=>'AL', -65255=>'AL', -65256=>'AL', -65257=>'AL', -65258=>'AL', -65259=>'AL', -65260=>'AL', -65261=>'AL', -65262=>'AL', -65263=>'AL', -65264=>'AL', -65265=>'AL', -65266=>'AL', -65267=>'AL', -65268=>'AL', -65269=>'AL', -65270=>'AL', -65271=>'AL', -65272=>'AL', -65273=>'AL', -65274=>'AL', -65275=>'AL', -65276=>'AL', -65279=>'BN', -65281=>'ON', -65282=>'ON', -65283=>'ET', -65284=>'ET', -65285=>'ET', -65286=>'ON', -65287=>'ON', -65288=>'ON', -65289=>'ON', -65290=>'ON', -65291=>'ES', -65292=>'CS', -65293=>'ES', -65294=>'CS', -65295=>'CS', -65296=>'EN', -65297=>'EN', -65298=>'EN', -65299=>'EN', -65300=>'EN', -65301=>'EN', -65302=>'EN', -65303=>'EN', -65304=>'EN', -65305=>'EN', -65306=>'CS', -65307=>'ON', -65308=>'ON', -65309=>'ON', -65310=>'ON', -65311=>'ON', -65312=>'ON', -65313=>'L', -65314=>'L', -65315=>'L', -65316=>'L', -65317=>'L', -65318=>'L', -65319=>'L', -65320=>'L', -65321=>'L', -65322=>'L', -65323=>'L', -65324=>'L', -65325=>'L', -65326=>'L', -65327=>'L', -65328=>'L', -65329=>'L', -65330=>'L', -65331=>'L', -65332=>'L', -65333=>'L', -65334=>'L', -65335=>'L', -65336=>'L', -65337=>'L', -65338=>'L', -65339=>'ON', -65340=>'ON', -65341=>'ON', -65342=>'ON', -65343=>'ON', -65344=>'ON', -65345=>'L', -65346=>'L', -65347=>'L', -65348=>'L', -65349=>'L', -65350=>'L', -65351=>'L', -65352=>'L', -65353=>'L', -65354=>'L', -65355=>'L', -65356=>'L', -65357=>'L', -65358=>'L', -65359=>'L', -65360=>'L', -65361=>'L', -65362=>'L', -65363=>'L', -65364=>'L', -65365=>'L', -65366=>'L', -65367=>'L', -65368=>'L', -65369=>'L', -65370=>'L', -65371=>'ON', -65372=>'ON', -65373=>'ON', -65374=>'ON', -65375=>'ON', -65376=>'ON', -65377=>'ON', -65378=>'ON', -65379=>'ON', -65380=>'ON', -65381=>'ON', -65382=>'L', -65383=>'L', -65384=>'L', -65385=>'L', -65386=>'L', -65387=>'L', -65388=>'L', -65389=>'L', -65390=>'L', -65391=>'L', -65392=>'L', -65393=>'L', -65394=>'L', -65395=>'L', -65396=>'L', -65397=>'L', -65398=>'L', -65399=>'L', -65400=>'L', -65401=>'L', -65402=>'L', -65403=>'L', -65404=>'L', -65405=>'L', -65406=>'L', -65407=>'L', -65408=>'L', -65409=>'L', -65410=>'L', -65411=>'L', -65412=>'L', -65413=>'L', -65414=>'L', -65415=>'L', -65416=>'L', -65417=>'L', -65418=>'L', -65419=>'L', -65420=>'L', -65421=>'L', -65422=>'L', -65423=>'L', -65424=>'L', -65425=>'L', -65426=>'L', -65427=>'L', -65428=>'L', -65429=>'L', -65430=>'L', -65431=>'L', -65432=>'L', -65433=>'L', -65434=>'L', -65435=>'L', -65436=>'L', -65437=>'L', -65438=>'L', -65439=>'L', -65440=>'L', -65441=>'L', -65442=>'L', -65443=>'L', -65444=>'L', -65445=>'L', -65446=>'L', -65447=>'L', -65448=>'L', -65449=>'L', -65450=>'L', -65451=>'L', -65452=>'L', -65453=>'L', -65454=>'L', -65455=>'L', -65456=>'L', -65457=>'L', -65458=>'L', -65459=>'L', -65460=>'L', -65461=>'L', -65462=>'L', -65463=>'L', -65464=>'L', -65465=>'L', -65466=>'L', -65467=>'L', -65468=>'L', -65469=>'L', -65470=>'L', -65474=>'L', -65475=>'L', -65476=>'L', -65477=>'L', -65478=>'L', -65479=>'L', -65482=>'L', -65483=>'L', -65484=>'L', -65485=>'L', -65486=>'L', -65487=>'L', -65490=>'L', -65491=>'L', -65492=>'L', -65493=>'L', -65494=>'L', -65495=>'L', -65498=>'L', -65499=>'L', -65500=>'L', -65504=>'ET', -65505=>'ET', -65506=>'ON', -65507=>'ON', -65508=>'ON', -65509=>'ET', -65510=>'ET', -65512=>'ON', -65513=>'ON', -65514=>'ON', -65515=>'ON', -65516=>'ON', -65517=>'ON', -65518=>'ON', -65529=>'ON', -65530=>'ON', -65531=>'ON', -65532=>'ON', -65533=>'ON', -65536=>'L', -65537=>'L', -65538=>'L', -65539=>'L', -65540=>'L', -65541=>'L', -65542=>'L', -65543=>'L', -65544=>'L', -65545=>'L', -65546=>'L', -65547=>'L', -65549=>'L', -65550=>'L', -65551=>'L', -65552=>'L', -65553=>'L', -65554=>'L', -65555=>'L', -65556=>'L', -65557=>'L', -65558=>'L', -65559=>'L', -65560=>'L', -65561=>'L', -65562=>'L', -65563=>'L', -65564=>'L', -65565=>'L', -65566=>'L', -65567=>'L', -65568=>'L', -65569=>'L', -65570=>'L', -65571=>'L', -65572=>'L', -65573=>'L', -65574=>'L', -65576=>'L', -65577=>'L', -65578=>'L', -65579=>'L', -65580=>'L', -65581=>'L', -65582=>'L', -65583=>'L', -65584=>'L', -65585=>'L', -65586=>'L', -65587=>'L', -65588=>'L', -65589=>'L', -65590=>'L', -65591=>'L', -65592=>'L', -65593=>'L', -65594=>'L', -65596=>'L', -65597=>'L', -65599=>'L', -65600=>'L', -65601=>'L', -65602=>'L', -65603=>'L', -65604=>'L', -65605=>'L', -65606=>'L', -65607=>'L', -65608=>'L', -65609=>'L', -65610=>'L', -65611=>'L', -65612=>'L', -65613=>'L', -65616=>'L', -65617=>'L', -65618=>'L', -65619=>'L', -65620=>'L', -65621=>'L', -65622=>'L', -65623=>'L', -65624=>'L', -65625=>'L', -65626=>'L', -65627=>'L', -65628=>'L', -65629=>'L', -65664=>'L', -65665=>'L', -65666=>'L', -65667=>'L', -65668=>'L', -65669=>'L', -65670=>'L', -65671=>'L', -65672=>'L', -65673=>'L', -65674=>'L', -65675=>'L', -65676=>'L', -65677=>'L', -65678=>'L', -65679=>'L', -65680=>'L', -65681=>'L', -65682=>'L', -65683=>'L', -65684=>'L', -65685=>'L', -65686=>'L', -65687=>'L', -65688=>'L', -65689=>'L', -65690=>'L', -65691=>'L', -65692=>'L', -65693=>'L', -65694=>'L', -65695=>'L', -65696=>'L', -65697=>'L', -65698=>'L', -65699=>'L', -65700=>'L', -65701=>'L', -65702=>'L', -65703=>'L', -65704=>'L', -65705=>'L', -65706=>'L', -65707=>'L', -65708=>'L', -65709=>'L', -65710=>'L', -65711=>'L', -65712=>'L', -65713=>'L', -65714=>'L', -65715=>'L', -65716=>'L', -65717=>'L', -65718=>'L', -65719=>'L', -65720=>'L', -65721=>'L', -65722=>'L', -65723=>'L', -65724=>'L', -65725=>'L', -65726=>'L', -65727=>'L', -65728=>'L', -65729=>'L', -65730=>'L', -65731=>'L', -65732=>'L', -65733=>'L', -65734=>'L', -65735=>'L', -65736=>'L', -65737=>'L', -65738=>'L', -65739=>'L', -65740=>'L', -65741=>'L', -65742=>'L', -65743=>'L', -65744=>'L', -65745=>'L', -65746=>'L', -65747=>'L', -65748=>'L', -65749=>'L', -65750=>'L', -65751=>'L', -65752=>'L', -65753=>'L', -65754=>'L', -65755=>'L', -65756=>'L', -65757=>'L', -65758=>'L', -65759=>'L', -65760=>'L', -65761=>'L', -65762=>'L', -65763=>'L', -65764=>'L', -65765=>'L', -65766=>'L', -65767=>'L', -65768=>'L', -65769=>'L', -65770=>'L', -65771=>'L', -65772=>'L', -65773=>'L', -65774=>'L', -65775=>'L', -65776=>'L', -65777=>'L', -65778=>'L', -65779=>'L', -65780=>'L', -65781=>'L', -65782=>'L', -65783=>'L', -65784=>'L', -65785=>'L', -65786=>'L', -65792=>'L', -65793=>'ON', -65794=>'L', -65799=>'L', -65800=>'L', -65801=>'L', -65802=>'L', -65803=>'L', -65804=>'L', -65805=>'L', -65806=>'L', -65807=>'L', -65808=>'L', -65809=>'L', -65810=>'L', -65811=>'L', -65812=>'L', -65813=>'L', -65814=>'L', -65815=>'L', -65816=>'L', -65817=>'L', -65818=>'L', -65819=>'L', -65820=>'L', -65821=>'L', -65822=>'L', -65823=>'L', -65824=>'L', -65825=>'L', -65826=>'L', -65827=>'L', -65828=>'L', -65829=>'L', -65830=>'L', -65831=>'L', -65832=>'L', -65833=>'L', -65834=>'L', -65835=>'L', -65836=>'L', -65837=>'L', -65838=>'L', -65839=>'L', -65840=>'L', -65841=>'L', -65842=>'L', -65843=>'L', -65847=>'L', -65848=>'L', -65849=>'L', -65850=>'L', -65851=>'L', -65852=>'L', -65853=>'L', -65854=>'L', -65855=>'L', -65856=>'ON', -65857=>'ON', -65858=>'ON', -65859=>'ON', -65860=>'ON', -65861=>'ON', -65862=>'ON', -65863=>'ON', -65864=>'ON', -65865=>'ON', -65866=>'ON', -65867=>'ON', -65868=>'ON', -65869=>'ON', -65870=>'ON', -65871=>'ON', -65872=>'ON', -65873=>'ON', -65874=>'ON', -65875=>'ON', -65876=>'ON', -65877=>'ON', -65878=>'ON', -65879=>'ON', -65880=>'ON', -65881=>'ON', -65882=>'ON', -65883=>'ON', -65884=>'ON', -65885=>'ON', -65886=>'ON', -65887=>'ON', -65888=>'ON', -65889=>'ON', -65890=>'ON', -65891=>'ON', -65892=>'ON', -65893=>'ON', -65894=>'ON', -65895=>'ON', -65896=>'ON', -65897=>'ON', -65898=>'ON', -65899=>'ON', -65900=>'ON', -65901=>'ON', -65902=>'ON', -65903=>'ON', -65904=>'ON', -65905=>'ON', -65906=>'ON', -65907=>'ON', -65908=>'ON', -65909=>'ON', -65910=>'ON', -65911=>'ON', -65912=>'ON', -65913=>'ON', -65914=>'ON', -65915=>'ON', -65916=>'ON', -65917=>'ON', -65918=>'ON', -65919=>'ON', -65920=>'ON', -65921=>'ON', -65922=>'ON', -65923=>'ON', -65924=>'ON', -65925=>'ON', -65926=>'ON', -65927=>'ON', -65928=>'ON', -65929=>'ON', -65930=>'ON', -66304=>'L', -66305=>'L', -66306=>'L', -66307=>'L', -66308=>'L', -66309=>'L', -66310=>'L', -66311=>'L', -66312=>'L', -66313=>'L', -66314=>'L', -66315=>'L', -66316=>'L', -66317=>'L', -66318=>'L', -66319=>'L', -66320=>'L', -66321=>'L', -66322=>'L', -66323=>'L', -66324=>'L', -66325=>'L', -66326=>'L', -66327=>'L', -66328=>'L', -66329=>'L', -66330=>'L', -66331=>'L', -66332=>'L', -66333=>'L', -66334=>'L', -66336=>'L', -66337=>'L', -66338=>'L', -66339=>'L', -66352=>'L', -66353=>'L', -66354=>'L', -66355=>'L', -66356=>'L', -66357=>'L', -66358=>'L', -66359=>'L', -66360=>'L', -66361=>'L', -66362=>'L', -66363=>'L', -66364=>'L', -66365=>'L', -66366=>'L', -66367=>'L', -66368=>'L', -66369=>'L', -66370=>'L', -66371=>'L', -66372=>'L', -66373=>'L', -66374=>'L', -66375=>'L', -66376=>'L', -66377=>'L', -66378=>'L', -66432=>'L', -66433=>'L', -66434=>'L', -66435=>'L', -66436=>'L', -66437=>'L', -66438=>'L', -66439=>'L', -66440=>'L', -66441=>'L', -66442=>'L', -66443=>'L', -66444=>'L', -66445=>'L', -66446=>'L', -66447=>'L', -66448=>'L', -66449=>'L', -66450=>'L', -66451=>'L', -66452=>'L', -66453=>'L', -66454=>'L', -66455=>'L', -66456=>'L', -66457=>'L', -66458=>'L', -66459=>'L', -66460=>'L', -66461=>'L', -66463=>'L', -66464=>'L', -66465=>'L', -66466=>'L', -66467=>'L', -66468=>'L', -66469=>'L', -66470=>'L', -66471=>'L', -66472=>'L', -66473=>'L', -66474=>'L', -66475=>'L', -66476=>'L', -66477=>'L', -66478=>'L', -66479=>'L', -66480=>'L', -66481=>'L', -66482=>'L', -66483=>'L', -66484=>'L', -66485=>'L', -66486=>'L', -66487=>'L', -66488=>'L', -66489=>'L', -66490=>'L', -66491=>'L', -66492=>'L', -66493=>'L', -66494=>'L', -66495=>'L', -66496=>'L', -66497=>'L', -66498=>'L', -66499=>'L', -66504=>'L', -66505=>'L', -66506=>'L', -66507=>'L', -66508=>'L', -66509=>'L', -66510=>'L', -66511=>'L', -66512=>'L', -66513=>'L', -66514=>'L', -66515=>'L', -66516=>'L', -66517=>'L', -66560=>'L', -66561=>'L', -66562=>'L', -66563=>'L', -66564=>'L', -66565=>'L', -66566=>'L', -66567=>'L', -66568=>'L', -66569=>'L', -66570=>'L', -66571=>'L', -66572=>'L', -66573=>'L', -66574=>'L', -66575=>'L', -66576=>'L', -66577=>'L', -66578=>'L', -66579=>'L', -66580=>'L', -66581=>'L', -66582=>'L', -66583=>'L', -66584=>'L', -66585=>'L', -66586=>'L', -66587=>'L', -66588=>'L', -66589=>'L', -66590=>'L', -66591=>'L', -66592=>'L', -66593=>'L', -66594=>'L', -66595=>'L', -66596=>'L', -66597=>'L', -66598=>'L', -66599=>'L', -66600=>'L', -66601=>'L', -66602=>'L', -66603=>'L', -66604=>'L', -66605=>'L', -66606=>'L', -66607=>'L', -66608=>'L', -66609=>'L', -66610=>'L', -66611=>'L', -66612=>'L', -66613=>'L', -66614=>'L', -66615=>'L', -66616=>'L', -66617=>'L', -66618=>'L', -66619=>'L', -66620=>'L', -66621=>'L', -66622=>'L', -66623=>'L', -66624=>'L', -66625=>'L', -66626=>'L', -66627=>'L', -66628=>'L', -66629=>'L', -66630=>'L', -66631=>'L', -66632=>'L', -66633=>'L', -66634=>'L', -66635=>'L', -66636=>'L', -66637=>'L', -66638=>'L', -66639=>'L', -66640=>'L', -66641=>'L', -66642=>'L', -66643=>'L', -66644=>'L', -66645=>'L', -66646=>'L', -66647=>'L', -66648=>'L', -66649=>'L', -66650=>'L', -66651=>'L', -66652=>'L', -66653=>'L', -66654=>'L', -66655=>'L', -66656=>'L', -66657=>'L', -66658=>'L', -66659=>'L', -66660=>'L', -66661=>'L', -66662=>'L', -66663=>'L', -66664=>'L', -66665=>'L', -66666=>'L', -66667=>'L', -66668=>'L', -66669=>'L', -66670=>'L', -66671=>'L', -66672=>'L', -66673=>'L', -66674=>'L', -66675=>'L', -66676=>'L', -66677=>'L', -66678=>'L', -66679=>'L', -66680=>'L', -66681=>'L', -66682=>'L', -66683=>'L', -66684=>'L', -66685=>'L', -66686=>'L', -66687=>'L', -66688=>'L', -66689=>'L', -66690=>'L', -66691=>'L', -66692=>'L', -66693=>'L', -66694=>'L', -66695=>'L', -66696=>'L', -66697=>'L', -66698=>'L', -66699=>'L', -66700=>'L', -66701=>'L', -66702=>'L', -66703=>'L', -66704=>'L', -66705=>'L', -66706=>'L', -66707=>'L', -66708=>'L', -66709=>'L', -66710=>'L', -66711=>'L', -66712=>'L', -66713=>'L', -66714=>'L', -66715=>'L', -66716=>'L', -66717=>'L', -66720=>'L', -66721=>'L', -66722=>'L', -66723=>'L', -66724=>'L', -66725=>'L', -66726=>'L', -66727=>'L', -66728=>'L', -66729=>'L', -67584=>'R', -67585=>'R', -67586=>'R', -67587=>'R', -67588=>'R', -67589=>'R', -67592=>'R', -67594=>'R', -67595=>'R', -67596=>'R', -67597=>'R', -67598=>'R', -67599=>'R', -67600=>'R', -67601=>'R', -67602=>'R', -67603=>'R', -67604=>'R', -67605=>'R', -67606=>'R', -67607=>'R', -67608=>'R', -67609=>'R', -67610=>'R', -67611=>'R', -67612=>'R', -67613=>'R', -67614=>'R', -67615=>'R', -67616=>'R', -67617=>'R', -67618=>'R', -67619=>'R', -67620=>'R', -67621=>'R', -67622=>'R', -67623=>'R', -67624=>'R', -67625=>'R', -67626=>'R', -67627=>'R', -67628=>'R', -67629=>'R', -67630=>'R', -67631=>'R', -67632=>'R', -67633=>'R', -67634=>'R', -67635=>'R', -67636=>'R', -67637=>'R', -67639=>'R', -67640=>'R', -67644=>'R', -67647=>'R', -67840=>'R', -67841=>'R', -67842=>'R', -67843=>'R', -67844=>'R', -67845=>'R', -67846=>'R', -67847=>'R', -67848=>'R', -67849=>'R', -67850=>'R', -67851=>'R', -67852=>'R', -67853=>'R', -67854=>'R', -67855=>'R', -67856=>'R', -67857=>'R', -67858=>'R', -67859=>'R', -67860=>'R', -67861=>'R', -67862=>'R', -67863=>'R', -67864=>'R', -67865=>'R', -67871=>'ON', -68096=>'R', -68097=>'NSM', -68098=>'NSM', -68099=>'NSM', -68101=>'NSM', -68102=>'NSM', -68108=>'NSM', -68109=>'NSM', -68110=>'NSM', -68111=>'NSM', -68112=>'R', -68113=>'R', -68114=>'R', -68115=>'R', -68117=>'R', -68118=>'R', -68119=>'R', -68121=>'R', -68122=>'R', -68123=>'R', -68124=>'R', -68125=>'R', -68126=>'R', -68127=>'R', -68128=>'R', -68129=>'R', -68130=>'R', -68131=>'R', -68132=>'R', -68133=>'R', -68134=>'R', -68135=>'R', -68136=>'R', -68137=>'R', -68138=>'R', -68139=>'R', -68140=>'R', -68141=>'R', -68142=>'R', -68143=>'R', -68144=>'R', -68145=>'R', -68146=>'R', -68147=>'R', -68152=>'NSM', -68153=>'NSM', -68154=>'NSM', -68159=>'NSM', -68160=>'R', -68161=>'R', -68162=>'R', -68163=>'R', -68164=>'R', -68165=>'R', -68166=>'R', -68167=>'R', -68176=>'R', -68177=>'R', -68178=>'R', -68179=>'R', -68180=>'R', -68181=>'R', -68182=>'R', -68183=>'R', -68184=>'R', -73728=>'L', -73729=>'L', -73730=>'L', -73731=>'L', -73732=>'L', -73733=>'L', -73734=>'L', -73735=>'L', -73736=>'L', -73737=>'L', -73738=>'L', -73739=>'L', -73740=>'L', -73741=>'L', -73742=>'L', -73743=>'L', -73744=>'L', -73745=>'L', -73746=>'L', -73747=>'L', -73748=>'L', -73749=>'L', -73750=>'L', -73751=>'L', -73752=>'L', -73753=>'L', -73754=>'L', -73755=>'L', -73756=>'L', -73757=>'L', -73758=>'L', -73759=>'L', -73760=>'L', -73761=>'L', -73762=>'L', -73763=>'L', -73764=>'L', -73765=>'L', -73766=>'L', -73767=>'L', -73768=>'L', -73769=>'L', -73770=>'L', -73771=>'L', -73772=>'L', -73773=>'L', -73774=>'L', -73775=>'L', -73776=>'L', -73777=>'L', -73778=>'L', -73779=>'L', -73780=>'L', -73781=>'L', -73782=>'L', -73783=>'L', -73784=>'L', -73785=>'L', -73786=>'L', -73787=>'L', -73788=>'L', -73789=>'L', -73790=>'L', -73791=>'L', -73792=>'L', -73793=>'L', -73794=>'L', -73795=>'L', -73796=>'L', -73797=>'L', -73798=>'L', -73799=>'L', -73800=>'L', -73801=>'L', -73802=>'L', -73803=>'L', -73804=>'L', -73805=>'L', -73806=>'L', -73807=>'L', -73808=>'L', -73809=>'L', -73810=>'L', -73811=>'L', -73812=>'L', -73813=>'L', -73814=>'L', -73815=>'L', -73816=>'L', -73817=>'L', -73818=>'L', -73819=>'L', -73820=>'L', -73821=>'L', -73822=>'L', -73823=>'L', -73824=>'L', -73825=>'L', -73826=>'L', -73827=>'L', -73828=>'L', -73829=>'L', -73830=>'L', -73831=>'L', -73832=>'L', -73833=>'L', -73834=>'L', -73835=>'L', -73836=>'L', -73837=>'L', -73838=>'L', -73839=>'L', -73840=>'L', -73841=>'L', -73842=>'L', -73843=>'L', -73844=>'L', -73845=>'L', -73846=>'L', -73847=>'L', -73848=>'L', -73849=>'L', -73850=>'L', -73851=>'L', -73852=>'L', -73853=>'L', -73854=>'L', -73855=>'L', -73856=>'L', -73857=>'L', -73858=>'L', -73859=>'L', -73860=>'L', -73861=>'L', -73862=>'L', -73863=>'L', -73864=>'L', -73865=>'L', -73866=>'L', -73867=>'L', -73868=>'L', -73869=>'L', -73870=>'L', -73871=>'L', -73872=>'L', -73873=>'L', -73874=>'L', -73875=>'L', -73876=>'L', -73877=>'L', -73878=>'L', -73879=>'L', -73880=>'L', -73881=>'L', -73882=>'L', -73883=>'L', -73884=>'L', -73885=>'L', -73886=>'L', -73887=>'L', -73888=>'L', -73889=>'L', -73890=>'L', -73891=>'L', -73892=>'L', -73893=>'L', -73894=>'L', -73895=>'L', -73896=>'L', -73897=>'L', -73898=>'L', -73899=>'L', -73900=>'L', -73901=>'L', -73902=>'L', -73903=>'L', -73904=>'L', -73905=>'L', -73906=>'L', -73907=>'L', -73908=>'L', -73909=>'L', -73910=>'L', -73911=>'L', -73912=>'L', -73913=>'L', -73914=>'L', -73915=>'L', -73916=>'L', -73917=>'L', -73918=>'L', -73919=>'L', -73920=>'L', -73921=>'L', -73922=>'L', -73923=>'L', -73924=>'L', -73925=>'L', -73926=>'L', -73927=>'L', -73928=>'L', -73929=>'L', -73930=>'L', -73931=>'L', -73932=>'L', -73933=>'L', -73934=>'L', -73935=>'L', -73936=>'L', -73937=>'L', -73938=>'L', -73939=>'L', -73940=>'L', -73941=>'L', -73942=>'L', -73943=>'L', -73944=>'L', -73945=>'L', -73946=>'L', -73947=>'L', -73948=>'L', -73949=>'L', -73950=>'L', -73951=>'L', -73952=>'L', -73953=>'L', -73954=>'L', -73955=>'L', -73956=>'L', -73957=>'L', -73958=>'L', -73959=>'L', -73960=>'L', -73961=>'L', -73962=>'L', -73963=>'L', -73964=>'L', -73965=>'L', -73966=>'L', -73967=>'L', -73968=>'L', -73969=>'L', -73970=>'L', -73971=>'L', -73972=>'L', -73973=>'L', -73974=>'L', -73975=>'L', -73976=>'L', -73977=>'L', -73978=>'L', -73979=>'L', -73980=>'L', -73981=>'L', -73982=>'L', -73983=>'L', -73984=>'L', -73985=>'L', -73986=>'L', -73987=>'L', -73988=>'L', -73989=>'L', -73990=>'L', -73991=>'L', -73992=>'L', -73993=>'L', -73994=>'L', -73995=>'L', -73996=>'L', -73997=>'L', -73998=>'L', -73999=>'L', -74000=>'L', -74001=>'L', -74002=>'L', -74003=>'L', -74004=>'L', -74005=>'L', -74006=>'L', -74007=>'L', -74008=>'L', -74009=>'L', -74010=>'L', -74011=>'L', -74012=>'L', -74013=>'L', -74014=>'L', -74015=>'L', -74016=>'L', -74017=>'L', -74018=>'L', -74019=>'L', -74020=>'L', -74021=>'L', -74022=>'L', -74023=>'L', -74024=>'L', -74025=>'L', -74026=>'L', -74027=>'L', -74028=>'L', -74029=>'L', -74030=>'L', -74031=>'L', -74032=>'L', -74033=>'L', -74034=>'L', -74035=>'L', -74036=>'L', -74037=>'L', -74038=>'L', -74039=>'L', -74040=>'L', -74041=>'L', -74042=>'L', -74043=>'L', -74044=>'L', -74045=>'L', -74046=>'L', -74047=>'L', -74048=>'L', -74049=>'L', -74050=>'L', -74051=>'L', -74052=>'L', -74053=>'L', -74054=>'L', -74055=>'L', -74056=>'L', -74057=>'L', -74058=>'L', -74059=>'L', -74060=>'L', -74061=>'L', -74062=>'L', -74063=>'L', -74064=>'L', -74065=>'L', -74066=>'L', -74067=>'L', -74068=>'L', -74069=>'L', -74070=>'L', -74071=>'L', -74072=>'L', -74073=>'L', -74074=>'L', -74075=>'L', -74076=>'L', -74077=>'L', -74078=>'L', -74079=>'L', -74080=>'L', -74081=>'L', -74082=>'L', -74083=>'L', -74084=>'L', -74085=>'L', -74086=>'L', -74087=>'L', -74088=>'L', -74089=>'L', -74090=>'L', -74091=>'L', -74092=>'L', -74093=>'L', -74094=>'L', -74095=>'L', -74096=>'L', -74097=>'L', -74098=>'L', -74099=>'L', -74100=>'L', -74101=>'L', -74102=>'L', -74103=>'L', -74104=>'L', -74105=>'L', -74106=>'L', -74107=>'L', -74108=>'L', -74109=>'L', -74110=>'L', -74111=>'L', -74112=>'L', -74113=>'L', -74114=>'L', -74115=>'L', -74116=>'L', -74117=>'L', -74118=>'L', -74119=>'L', -74120=>'L', -74121=>'L', -74122=>'L', -74123=>'L', -74124=>'L', -74125=>'L', -74126=>'L', -74127=>'L', -74128=>'L', -74129=>'L', -74130=>'L', -74131=>'L', -74132=>'L', -74133=>'L', -74134=>'L', -74135=>'L', -74136=>'L', -74137=>'L', -74138=>'L', -74139=>'L', -74140=>'L', -74141=>'L', -74142=>'L', -74143=>'L', -74144=>'L', -74145=>'L', -74146=>'L', -74147=>'L', -74148=>'L', -74149=>'L', -74150=>'L', -74151=>'L', -74152=>'L', -74153=>'L', -74154=>'L', -74155=>'L', -74156=>'L', -74157=>'L', -74158=>'L', -74159=>'L', -74160=>'L', -74161=>'L', -74162=>'L', -74163=>'L', -74164=>'L', -74165=>'L', -74166=>'L', -74167=>'L', -74168=>'L', -74169=>'L', -74170=>'L', -74171=>'L', -74172=>'L', -74173=>'L', -74174=>'L', -74175=>'L', -74176=>'L', -74177=>'L', -74178=>'L', -74179=>'L', -74180=>'L', -74181=>'L', -74182=>'L', -74183=>'L', -74184=>'L', -74185=>'L', -74186=>'L', -74187=>'L', -74188=>'L', -74189=>'L', -74190=>'L', -74191=>'L', -74192=>'L', -74193=>'L', -74194=>'L', -74195=>'L', -74196=>'L', -74197=>'L', -74198=>'L', -74199=>'L', -74200=>'L', -74201=>'L', -74202=>'L', -74203=>'L', -74204=>'L', -74205=>'L', -74206=>'L', -74207=>'L', -74208=>'L', -74209=>'L', -74210=>'L', -74211=>'L', -74212=>'L', -74213=>'L', -74214=>'L', -74215=>'L', -74216=>'L', -74217=>'L', -74218=>'L', -74219=>'L', -74220=>'L', -74221=>'L', -74222=>'L', -74223=>'L', -74224=>'L', -74225=>'L', -74226=>'L', -74227=>'L', -74228=>'L', -74229=>'L', -74230=>'L', -74231=>'L', -74232=>'L', -74233=>'L', -74234=>'L', -74235=>'L', -74236=>'L', -74237=>'L', -74238=>'L', -74239=>'L', -74240=>'L', -74241=>'L', -74242=>'L', -74243=>'L', -74244=>'L', -74245=>'L', -74246=>'L', -74247=>'L', -74248=>'L', -74249=>'L', -74250=>'L', -74251=>'L', -74252=>'L', -74253=>'L', -74254=>'L', -74255=>'L', -74256=>'L', -74257=>'L', -74258=>'L', -74259=>'L', -74260=>'L', -74261=>'L', -74262=>'L', -74263=>'L', -74264=>'L', -74265=>'L', -74266=>'L', -74267=>'L', -74268=>'L', -74269=>'L', -74270=>'L', -74271=>'L', -74272=>'L', -74273=>'L', -74274=>'L', -74275=>'L', -74276=>'L', -74277=>'L', -74278=>'L', -74279=>'L', -74280=>'L', -74281=>'L', -74282=>'L', -74283=>'L', -74284=>'L', -74285=>'L', -74286=>'L', -74287=>'L', -74288=>'L', -74289=>'L', -74290=>'L', -74291=>'L', -74292=>'L', -74293=>'L', -74294=>'L', -74295=>'L', -74296=>'L', -74297=>'L', -74298=>'L', -74299=>'L', -74300=>'L', -74301=>'L', -74302=>'L', -74303=>'L', -74304=>'L', -74305=>'L', -74306=>'L', -74307=>'L', -74308=>'L', -74309=>'L', -74310=>'L', -74311=>'L', -74312=>'L', -74313=>'L', -74314=>'L', -74315=>'L', -74316=>'L', -74317=>'L', -74318=>'L', -74319=>'L', -74320=>'L', -74321=>'L', -74322=>'L', -74323=>'L', -74324=>'L', -74325=>'L', -74326=>'L', -74327=>'L', -74328=>'L', -74329=>'L', -74330=>'L', -74331=>'L', -74332=>'L', -74333=>'L', -74334=>'L', -74335=>'L', -74336=>'L', -74337=>'L', -74338=>'L', -74339=>'L', -74340=>'L', -74341=>'L', -74342=>'L', -74343=>'L', -74344=>'L', -74345=>'L', -74346=>'L', -74347=>'L', -74348=>'L', -74349=>'L', -74350=>'L', -74351=>'L', -74352=>'L', -74353=>'L', -74354=>'L', -74355=>'L', -74356=>'L', -74357=>'L', -74358=>'L', -74359=>'L', -74360=>'L', -74361=>'L', -74362=>'L', -74363=>'L', -74364=>'L', -74365=>'L', -74366=>'L', -74367=>'L', -74368=>'L', -74369=>'L', -74370=>'L', -74371=>'L', -74372=>'L', -74373=>'L', -74374=>'L', -74375=>'L', -74376=>'L', -74377=>'L', -74378=>'L', -74379=>'L', -74380=>'L', -74381=>'L', -74382=>'L', -74383=>'L', -74384=>'L', -74385=>'L', -74386=>'L', -74387=>'L', -74388=>'L', -74389=>'L', -74390=>'L', -74391=>'L', -74392=>'L', -74393=>'L', -74394=>'L', -74395=>'L', -74396=>'L', -74397=>'L', -74398=>'L', -74399=>'L', -74400=>'L', -74401=>'L', -74402=>'L', -74403=>'L', -74404=>'L', -74405=>'L', -74406=>'L', -74407=>'L', -74408=>'L', -74409=>'L', -74410=>'L', -74411=>'L', -74412=>'L', -74413=>'L', -74414=>'L', -74415=>'L', -74416=>'L', -74417=>'L', -74418=>'L', -74419=>'L', -74420=>'L', -74421=>'L', -74422=>'L', -74423=>'L', -74424=>'L', -74425=>'L', -74426=>'L', -74427=>'L', -74428=>'L', -74429=>'L', -74430=>'L', -74431=>'L', -74432=>'L', -74433=>'L', -74434=>'L', -74435=>'L', -74436=>'L', -74437=>'L', -74438=>'L', -74439=>'L', -74440=>'L', -74441=>'L', -74442=>'L', -74443=>'L', -74444=>'L', -74445=>'L', -74446=>'L', -74447=>'L', -74448=>'L', -74449=>'L', -74450=>'L', -74451=>'L', -74452=>'L', -74453=>'L', -74454=>'L', -74455=>'L', -74456=>'L', -74457=>'L', -74458=>'L', -74459=>'L', -74460=>'L', -74461=>'L', -74462=>'L', -74463=>'L', -74464=>'L', -74465=>'L', -74466=>'L', -74467=>'L', -74468=>'L', -74469=>'L', -74470=>'L', -74471=>'L', -74472=>'L', -74473=>'L', -74474=>'L', -74475=>'L', -74476=>'L', -74477=>'L', -74478=>'L', -74479=>'L', -74480=>'L', -74481=>'L', -74482=>'L', -74483=>'L', -74484=>'L', -74485=>'L', -74486=>'L', -74487=>'L', -74488=>'L', -74489=>'L', -74490=>'L', -74491=>'L', -74492=>'L', -74493=>'L', -74494=>'L', -74495=>'L', -74496=>'L', -74497=>'L', -74498=>'L', -74499=>'L', -74500=>'L', -74501=>'L', -74502=>'L', -74503=>'L', -74504=>'L', -74505=>'L', -74506=>'L', -74507=>'L', -74508=>'L', -74509=>'L', -74510=>'L', -74511=>'L', -74512=>'L', -74513=>'L', -74514=>'L', -74515=>'L', -74516=>'L', -74517=>'L', -74518=>'L', -74519=>'L', -74520=>'L', -74521=>'L', -74522=>'L', -74523=>'L', -74524=>'L', -74525=>'L', -74526=>'L', -74527=>'L', -74528=>'L', -74529=>'L', -74530=>'L', -74531=>'L', -74532=>'L', -74533=>'L', -74534=>'L', -74535=>'L', -74536=>'L', -74537=>'L', -74538=>'L', -74539=>'L', -74540=>'L', -74541=>'L', -74542=>'L', -74543=>'L', -74544=>'L', -74545=>'L', -74546=>'L', -74547=>'L', -74548=>'L', -74549=>'L', -74550=>'L', -74551=>'L', -74552=>'L', -74553=>'L', -74554=>'L', -74555=>'L', -74556=>'L', -74557=>'L', -74558=>'L', -74559=>'L', -74560=>'L', -74561=>'L', -74562=>'L', -74563=>'L', -74564=>'L', -74565=>'L', -74566=>'L', -74567=>'L', -74568=>'L', -74569=>'L', -74570=>'L', -74571=>'L', -74572=>'L', -74573=>'L', -74574=>'L', -74575=>'L', -74576=>'L', -74577=>'L', -74578=>'L', -74579=>'L', -74580=>'L', -74581=>'L', -74582=>'L', -74583=>'L', -74584=>'L', -74585=>'L', -74586=>'L', -74587=>'L', -74588=>'L', -74589=>'L', -74590=>'L', -74591=>'L', -74592=>'L', -74593=>'L', -74594=>'L', -74595=>'L', -74596=>'L', -74597=>'L', -74598=>'L', -74599=>'L', -74600=>'L', -74601=>'L', -74602=>'L', -74603=>'L', -74604=>'L', -74605=>'L', -74606=>'L', -74752=>'L', -74753=>'L', -74754=>'L', -74755=>'L', -74756=>'L', -74757=>'L', -74758=>'L', -74759=>'L', -74760=>'L', -74761=>'L', -74762=>'L', -74763=>'L', -74764=>'L', -74765=>'L', -74766=>'L', -74767=>'L', -74768=>'L', -74769=>'L', -74770=>'L', -74771=>'L', -74772=>'L', -74773=>'L', -74774=>'L', -74775=>'L', -74776=>'L', -74777=>'L', -74778=>'L', -74779=>'L', -74780=>'L', -74781=>'L', -74782=>'L', -74783=>'L', -74784=>'L', -74785=>'L', -74786=>'L', -74787=>'L', -74788=>'L', -74789=>'L', -74790=>'L', -74791=>'L', -74792=>'L', -74793=>'L', -74794=>'L', -74795=>'L', -74796=>'L', -74797=>'L', -74798=>'L', -74799=>'L', -74800=>'L', -74801=>'L', -74802=>'L', -74803=>'L', -74804=>'L', -74805=>'L', -74806=>'L', -74807=>'L', -74808=>'L', -74809=>'L', -74810=>'L', -74811=>'L', -74812=>'L', -74813=>'L', -74814=>'L', -74815=>'L', -74816=>'L', -74817=>'L', -74818=>'L', -74819=>'L', -74820=>'L', -74821=>'L', -74822=>'L', -74823=>'L', -74824=>'L', -74825=>'L', -74826=>'L', -74827=>'L', -74828=>'L', -74829=>'L', -74830=>'L', -74831=>'L', -74832=>'L', -74833=>'L', -74834=>'L', -74835=>'L', -74836=>'L', -74837=>'L', -74838=>'L', -74839=>'L', -74840=>'L', -74841=>'L', -74842=>'L', -74843=>'L', -74844=>'L', -74845=>'L', -74846=>'L', -74847=>'L', -74848=>'L', -74849=>'L', -74850=>'L', -74864=>'L', -74865=>'L', -74866=>'L', -74867=>'L', -118784=>'L', -118785=>'L', -118786=>'L', -118787=>'L', -118788=>'L', -118789=>'L', -118790=>'L', -118791=>'L', -118792=>'L', -118793=>'L', -118794=>'L', -118795=>'L', -118796=>'L', -118797=>'L', -118798=>'L', -118799=>'L', -118800=>'L', -118801=>'L', -118802=>'L', -118803=>'L', -118804=>'L', -118805=>'L', -118806=>'L', -118807=>'L', -118808=>'L', -118809=>'L', -118810=>'L', -118811=>'L', -118812=>'L', -118813=>'L', -118814=>'L', -118815=>'L', -118816=>'L', -118817=>'L', -118818=>'L', -118819=>'L', -118820=>'L', -118821=>'L', -118822=>'L', -118823=>'L', -118824=>'L', -118825=>'L', -118826=>'L', -118827=>'L', -118828=>'L', -118829=>'L', -118830=>'L', -118831=>'L', -118832=>'L', -118833=>'L', -118834=>'L', -118835=>'L', -118836=>'L', -118837=>'L', -118838=>'L', -118839=>'L', -118840=>'L', -118841=>'L', -118842=>'L', -118843=>'L', -118844=>'L', -118845=>'L', -118846=>'L', -118847=>'L', -118848=>'L', -118849=>'L', -118850=>'L', -118851=>'L', -118852=>'L', -118853=>'L', -118854=>'L', -118855=>'L', -118856=>'L', -118857=>'L', -118858=>'L', -118859=>'L', -118860=>'L', -118861=>'L', -118862=>'L', -118863=>'L', -118864=>'L', -118865=>'L', -118866=>'L', -118867=>'L', -118868=>'L', -118869=>'L', -118870=>'L', -118871=>'L', -118872=>'L', -118873=>'L', -118874=>'L', -118875=>'L', -118876=>'L', -118877=>'L', -118878=>'L', -118879=>'L', -118880=>'L', -118881=>'L', -118882=>'L', -118883=>'L', -118884=>'L', -118885=>'L', -118886=>'L', -118887=>'L', -118888=>'L', -118889=>'L', -118890=>'L', -118891=>'L', -118892=>'L', -118893=>'L', -118894=>'L', -118895=>'L', -118896=>'L', -118897=>'L', -118898=>'L', -118899=>'L', -118900=>'L', -118901=>'L', -118902=>'L', -118903=>'L', -118904=>'L', -118905=>'L', -118906=>'L', -118907=>'L', -118908=>'L', -118909=>'L', -118910=>'L', -118911=>'L', -118912=>'L', -118913=>'L', -118914=>'L', -118915=>'L', -118916=>'L', -118917=>'L', -118918=>'L', -118919=>'L', -118920=>'L', -118921=>'L', -118922=>'L', -118923=>'L', -118924=>'L', -118925=>'L', -118926=>'L', -118927=>'L', -118928=>'L', -118929=>'L', -118930=>'L', -118931=>'L', -118932=>'L', -118933=>'L', -118934=>'L', -118935=>'L', -118936=>'L', -118937=>'L', -118938=>'L', -118939=>'L', -118940=>'L', -118941=>'L', -118942=>'L', -118943=>'L', -118944=>'L', -118945=>'L', -118946=>'L', -118947=>'L', -118948=>'L', -118949=>'L', -118950=>'L', -118951=>'L', -118952=>'L', -118953=>'L', -118954=>'L', -118955=>'L', -118956=>'L', -118957=>'L', -118958=>'L', -118959=>'L', -118960=>'L', -118961=>'L', -118962=>'L', -118963=>'L', -118964=>'L', -118965=>'L', -118966=>'L', -118967=>'L', -118968=>'L', -118969=>'L', -118970=>'L', -118971=>'L', -118972=>'L', -118973=>'L', -118974=>'L', -118975=>'L', -118976=>'L', -118977=>'L', -118978=>'L', -118979=>'L', -118980=>'L', -118981=>'L', -118982=>'L', -118983=>'L', -118984=>'L', -118985=>'L', -118986=>'L', -118987=>'L', -118988=>'L', -118989=>'L', -118990=>'L', -118991=>'L', -118992=>'L', -118993=>'L', -118994=>'L', -118995=>'L', -118996=>'L', -118997=>'L', -118998=>'L', -118999=>'L', -119000=>'L', -119001=>'L', -119002=>'L', -119003=>'L', -119004=>'L', -119005=>'L', -119006=>'L', -119007=>'L', -119008=>'L', -119009=>'L', -119010=>'L', -119011=>'L', -119012=>'L', -119013=>'L', -119014=>'L', -119015=>'L', -119016=>'L', -119017=>'L', -119018=>'L', -119019=>'L', -119020=>'L', -119021=>'L', -119022=>'L', -119023=>'L', -119024=>'L', -119025=>'L', -119026=>'L', -119027=>'L', -119028=>'L', -119029=>'L', -119040=>'L', -119041=>'L', -119042=>'L', -119043=>'L', -119044=>'L', -119045=>'L', -119046=>'L', -119047=>'L', -119048=>'L', -119049=>'L', -119050=>'L', -119051=>'L', -119052=>'L', -119053=>'L', -119054=>'L', -119055=>'L', -119056=>'L', -119057=>'L', -119058=>'L', -119059=>'L', -119060=>'L', -119061=>'L', -119062=>'L', -119063=>'L', -119064=>'L', -119065=>'L', -119066=>'L', -119067=>'L', -119068=>'L', -119069=>'L', -119070=>'L', -119071=>'L', -119072=>'L', -119073=>'L', -119074=>'L', -119075=>'L', -119076=>'L', -119077=>'L', -119078=>'L', -119082=>'L', -119083=>'L', -119084=>'L', -119085=>'L', -119086=>'L', -119087=>'L', -119088=>'L', -119089=>'L', -119090=>'L', -119091=>'L', -119092=>'L', -119093=>'L', -119094=>'L', -119095=>'L', -119096=>'L', -119097=>'L', -119098=>'L', -119099=>'L', -119100=>'L', -119101=>'L', -119102=>'L', -119103=>'L', -119104=>'L', -119105=>'L', -119106=>'L', -119107=>'L', -119108=>'L', -119109=>'L', -119110=>'L', -119111=>'L', -119112=>'L', -119113=>'L', -119114=>'L', -119115=>'L', -119116=>'L', -119117=>'L', -119118=>'L', -119119=>'L', -119120=>'L', -119121=>'L', -119122=>'L', -119123=>'L', -119124=>'L', -119125=>'L', -119126=>'L', -119127=>'L', -119128=>'L', -119129=>'L', -119130=>'L', -119131=>'L', -119132=>'L', -119133=>'L', -119134=>'L', -119135=>'L', -119136=>'L', -119137=>'L', -119138=>'L', -119139=>'L', -119140=>'L', -119141=>'L', -119142=>'L', -119143=>'NSM', -119144=>'NSM', -119145=>'NSM', -119146=>'L', -119147=>'L', -119148=>'L', -119149=>'L', -119150=>'L', -119151=>'L', -119152=>'L', -119153=>'L', -119154=>'L', -119155=>'BN', -119156=>'BN', -119157=>'BN', -119158=>'BN', -119159=>'BN', -119160=>'BN', -119161=>'BN', -119162=>'BN', -119163=>'NSM', -119164=>'NSM', -119165=>'NSM', -119166=>'NSM', -119167=>'NSM', -119168=>'NSM', -119169=>'NSM', -119170=>'NSM', -119171=>'L', -119172=>'L', -119173=>'NSM', -119174=>'NSM', -119175=>'NSM', -119176=>'NSM', -119177=>'NSM', -119178=>'NSM', -119179=>'NSM', -119180=>'L', -119181=>'L', -119182=>'L', -119183=>'L', -119184=>'L', -119185=>'L', -119186=>'L', -119187=>'L', -119188=>'L', -119189=>'L', -119190=>'L', -119191=>'L', -119192=>'L', -119193=>'L', -119194=>'L', -119195=>'L', -119196=>'L', -119197=>'L', -119198=>'L', -119199=>'L', -119200=>'L', -119201=>'L', -119202=>'L', -119203=>'L', -119204=>'L', -119205=>'L', -119206=>'L', -119207=>'L', -119208=>'L', -119209=>'L', -119210=>'NSM', -119211=>'NSM', -119212=>'NSM', -119213=>'NSM', -119214=>'L', -119215=>'L', -119216=>'L', -119217=>'L', -119218=>'L', -119219=>'L', -119220=>'L', -119221=>'L', -119222=>'L', -119223=>'L', -119224=>'L', -119225=>'L', -119226=>'L', -119227=>'L', -119228=>'L', -119229=>'L', -119230=>'L', -119231=>'L', -119232=>'L', -119233=>'L', -119234=>'L', -119235=>'L', -119236=>'L', -119237=>'L', -119238=>'L', -119239=>'L', -119240=>'L', -119241=>'L', -119242=>'L', -119243=>'L', -119244=>'L', -119245=>'L', -119246=>'L', -119247=>'L', -119248=>'L', -119249=>'L', -119250=>'L', -119251=>'L', -119252=>'L', -119253=>'L', -119254=>'L', -119255=>'L', -119256=>'L', -119257=>'L', -119258=>'L', -119259=>'L', -119260=>'L', -119261=>'L', -119296=>'ON', -119297=>'ON', -119298=>'ON', -119299=>'ON', -119300=>'ON', -119301=>'ON', -119302=>'ON', -119303=>'ON', -119304=>'ON', -119305=>'ON', -119306=>'ON', -119307=>'ON', -119308=>'ON', -119309=>'ON', -119310=>'ON', -119311=>'ON', -119312=>'ON', -119313=>'ON', -119314=>'ON', -119315=>'ON', -119316=>'ON', -119317=>'ON', -119318=>'ON', -119319=>'ON', -119320=>'ON', -119321=>'ON', -119322=>'ON', -119323=>'ON', -119324=>'ON', -119325=>'ON', -119326=>'ON', -119327=>'ON', -119328=>'ON', -119329=>'ON', -119330=>'ON', -119331=>'ON', -119332=>'ON', -119333=>'ON', -119334=>'ON', -119335=>'ON', -119336=>'ON', -119337=>'ON', -119338=>'ON', -119339=>'ON', -119340=>'ON', -119341=>'ON', -119342=>'ON', -119343=>'ON', -119344=>'ON', -119345=>'ON', -119346=>'ON', -119347=>'ON', -119348=>'ON', -119349=>'ON', -119350=>'ON', -119351=>'ON', -119352=>'ON', -119353=>'ON', -119354=>'ON', -119355=>'ON', -119356=>'ON', -119357=>'ON', -119358=>'ON', -119359=>'ON', -119360=>'ON', -119361=>'ON', -119362=>'NSM', -119363=>'NSM', -119364=>'NSM', -119365=>'ON', -119552=>'ON', -119553=>'ON', -119554=>'ON', -119555=>'ON', -119556=>'ON', -119557=>'ON', -119558=>'ON', -119559=>'ON', -119560=>'ON', -119561=>'ON', -119562=>'ON', -119563=>'ON', -119564=>'ON', -119565=>'ON', -119566=>'ON', -119567=>'ON', -119568=>'ON', -119569=>'ON', -119570=>'ON', -119571=>'ON', -119572=>'ON', -119573=>'ON', -119574=>'ON', -119575=>'ON', -119576=>'ON', -119577=>'ON', -119578=>'ON', -119579=>'ON', -119580=>'ON', -119581=>'ON', -119582=>'ON', -119583=>'ON', -119584=>'ON', -119585=>'ON', -119586=>'ON', -119587=>'ON', -119588=>'ON', -119589=>'ON', -119590=>'ON', -119591=>'ON', -119592=>'ON', -119593=>'ON', -119594=>'ON', -119595=>'ON', -119596=>'ON', -119597=>'ON', -119598=>'ON', -119599=>'ON', -119600=>'ON', -119601=>'ON', -119602=>'ON', -119603=>'ON', -119604=>'ON', -119605=>'ON', -119606=>'ON', -119607=>'ON', -119608=>'ON', -119609=>'ON', -119610=>'ON', -119611=>'ON', -119612=>'ON', -119613=>'ON', -119614=>'ON', -119615=>'ON', -119616=>'ON', -119617=>'ON', -119618=>'ON', -119619=>'ON', -119620=>'ON', -119621=>'ON', -119622=>'ON', -119623=>'ON', -119624=>'ON', -119625=>'ON', -119626=>'ON', -119627=>'ON', -119628=>'ON', -119629=>'ON', -119630=>'ON', -119631=>'ON', -119632=>'ON', -119633=>'ON', -119634=>'ON', -119635=>'ON', -119636=>'ON', -119637=>'ON', -119638=>'ON', -119648=>'L', -119649=>'L', -119650=>'L', -119651=>'L', -119652=>'L', -119653=>'L', -119654=>'L', -119655=>'L', -119656=>'L', -119657=>'L', -119658=>'L', -119659=>'L', -119660=>'L', -119661=>'L', -119662=>'L', -119663=>'L', -119664=>'L', -119665=>'L', -119808=>'L', -119809=>'L', -119810=>'L', -119811=>'L', -119812=>'L', -119813=>'L', -119814=>'L', -119815=>'L', -119816=>'L', -119817=>'L', -119818=>'L', -119819=>'L', -119820=>'L', -119821=>'L', -119822=>'L', -119823=>'L', -119824=>'L', -119825=>'L', -119826=>'L', -119827=>'L', -119828=>'L', -119829=>'L', -119830=>'L', -119831=>'L', -119832=>'L', -119833=>'L', -119834=>'L', -119835=>'L', -119836=>'L', -119837=>'L', -119838=>'L', -119839=>'L', -119840=>'L', -119841=>'L', -119842=>'L', -119843=>'L', -119844=>'L', -119845=>'L', -119846=>'L', -119847=>'L', -119848=>'L', -119849=>'L', -119850=>'L', -119851=>'L', -119852=>'L', -119853=>'L', -119854=>'L', -119855=>'L', -119856=>'L', -119857=>'L', -119858=>'L', -119859=>'L', -119860=>'L', -119861=>'L', -119862=>'L', -119863=>'L', -119864=>'L', -119865=>'L', -119866=>'L', -119867=>'L', -119868=>'L', -119869=>'L', -119870=>'L', -119871=>'L', -119872=>'L', -119873=>'L', -119874=>'L', -119875=>'L', -119876=>'L', -119877=>'L', -119878=>'L', -119879=>'L', -119880=>'L', -119881=>'L', -119882=>'L', -119883=>'L', -119884=>'L', -119885=>'L', -119886=>'L', -119887=>'L', -119888=>'L', -119889=>'L', -119890=>'L', -119891=>'L', -119892=>'L', -119894=>'L', -119895=>'L', -119896=>'L', -119897=>'L', -119898=>'L', -119899=>'L', -119900=>'L', -119901=>'L', -119902=>'L', -119903=>'L', -119904=>'L', -119905=>'L', -119906=>'L', -119907=>'L', -119908=>'L', -119909=>'L', -119910=>'L', -119911=>'L', -119912=>'L', -119913=>'L', -119914=>'L', -119915=>'L', -119916=>'L', -119917=>'L', -119918=>'L', -119919=>'L', -119920=>'L', -119921=>'L', -119922=>'L', -119923=>'L', -119924=>'L', -119925=>'L', -119926=>'L', -119927=>'L', -119928=>'L', -119929=>'L', -119930=>'L', -119931=>'L', -119932=>'L', -119933=>'L', -119934=>'L', -119935=>'L', -119936=>'L', -119937=>'L', -119938=>'L', -119939=>'L', -119940=>'L', -119941=>'L', -119942=>'L', -119943=>'L', -119944=>'L', -119945=>'L', -119946=>'L', -119947=>'L', -119948=>'L', -119949=>'L', -119950=>'L', -119951=>'L', -119952=>'L', -119953=>'L', -119954=>'L', -119955=>'L', -119956=>'L', -119957=>'L', -119958=>'L', -119959=>'L', -119960=>'L', -119961=>'L', -119962=>'L', -119963=>'L', -119964=>'L', -119966=>'L', -119967=>'L', -119970=>'L', -119973=>'L', -119974=>'L', -119977=>'L', -119978=>'L', -119979=>'L', -119980=>'L', -119982=>'L', -119983=>'L', -119984=>'L', -119985=>'L', -119986=>'L', -119987=>'L', -119988=>'L', -119989=>'L', -119990=>'L', -119991=>'L', -119992=>'L', -119993=>'L', -119995=>'L', -119997=>'L', -119998=>'L', -119999=>'L', -120000=>'L', -120001=>'L', -120002=>'L', -120003=>'L', -120005=>'L', -120006=>'L', -120007=>'L', -120008=>'L', -120009=>'L', -120010=>'L', -120011=>'L', -120012=>'L', -120013=>'L', -120014=>'L', -120015=>'L', -120016=>'L', -120017=>'L', -120018=>'L', -120019=>'L', -120020=>'L', -120021=>'L', -120022=>'L', -120023=>'L', -120024=>'L', -120025=>'L', -120026=>'L', -120027=>'L', -120028=>'L', -120029=>'L', -120030=>'L', -120031=>'L', -120032=>'L', -120033=>'L', -120034=>'L', -120035=>'L', -120036=>'L', -120037=>'L', -120038=>'L', -120039=>'L', -120040=>'L', -120041=>'L', -120042=>'L', -120043=>'L', -120044=>'L', -120045=>'L', -120046=>'L', -120047=>'L', -120048=>'L', -120049=>'L', -120050=>'L', -120051=>'L', -120052=>'L', -120053=>'L', -120054=>'L', -120055=>'L', -120056=>'L', -120057=>'L', -120058=>'L', -120059=>'L', -120060=>'L', -120061=>'L', -120062=>'L', -120063=>'L', -120064=>'L', -120065=>'L', -120066=>'L', -120067=>'L', -120068=>'L', -120069=>'L', -120071=>'L', -120072=>'L', -120073=>'L', -120074=>'L', -120077=>'L', -120078=>'L', -120079=>'L', -120080=>'L', -120081=>'L', -120082=>'L', -120083=>'L', -120084=>'L', -120086=>'L', -120087=>'L', -120088=>'L', -120089=>'L', -120090=>'L', -120091=>'L', -120092=>'L', -120094=>'L', -120095=>'L', -120096=>'L', -120097=>'L', -120098=>'L', -120099=>'L', -120100=>'L', -120101=>'L', -120102=>'L', -120103=>'L', -120104=>'L', -120105=>'L', -120106=>'L', -120107=>'L', -120108=>'L', -120109=>'L', -120110=>'L', -120111=>'L', -120112=>'L', -120113=>'L', -120114=>'L', -120115=>'L', -120116=>'L', -120117=>'L', -120118=>'L', -120119=>'L', -120120=>'L', -120121=>'L', -120123=>'L', -120124=>'L', -120125=>'L', -120126=>'L', -120128=>'L', -120129=>'L', -120130=>'L', -120131=>'L', -120132=>'L', -120134=>'L', -120138=>'L', -120139=>'L', -120140=>'L', -120141=>'L', -120142=>'L', -120143=>'L', -120144=>'L', -120146=>'L', -120147=>'L', -120148=>'L', -120149=>'L', -120150=>'L', -120151=>'L', -120152=>'L', -120153=>'L', -120154=>'L', -120155=>'L', -120156=>'L', -120157=>'L', -120158=>'L', -120159=>'L', -120160=>'L', -120161=>'L', -120162=>'L', -120163=>'L', -120164=>'L', -120165=>'L', -120166=>'L', -120167=>'L', -120168=>'L', -120169=>'L', -120170=>'L', -120171=>'L', -120172=>'L', -120173=>'L', -120174=>'L', -120175=>'L', -120176=>'L', -120177=>'L', -120178=>'L', -120179=>'L', -120180=>'L', -120181=>'L', -120182=>'L', -120183=>'L', -120184=>'L', -120185=>'L', -120186=>'L', -120187=>'L', -120188=>'L', -120189=>'L', -120190=>'L', -120191=>'L', -120192=>'L', -120193=>'L', -120194=>'L', -120195=>'L', -120196=>'L', -120197=>'L', -120198=>'L', -120199=>'L', -120200=>'L', -120201=>'L', -120202=>'L', -120203=>'L', -120204=>'L', -120205=>'L', -120206=>'L', -120207=>'L', -120208=>'L', -120209=>'L', -120210=>'L', -120211=>'L', -120212=>'L', -120213=>'L', -120214=>'L', -120215=>'L', -120216=>'L', -120217=>'L', -120218=>'L', -120219=>'L', -120220=>'L', -120221=>'L', -120222=>'L', -120223=>'L', -120224=>'L', -120225=>'L', -120226=>'L', -120227=>'L', -120228=>'L', -120229=>'L', -120230=>'L', -120231=>'L', -120232=>'L', -120233=>'L', -120234=>'L', -120235=>'L', -120236=>'L', -120237=>'L', -120238=>'L', -120239=>'L', -120240=>'L', -120241=>'L', -120242=>'L', -120243=>'L', -120244=>'L', -120245=>'L', -120246=>'L', -120247=>'L', -120248=>'L', -120249=>'L', -120250=>'L', -120251=>'L', -120252=>'L', -120253=>'L', -120254=>'L', -120255=>'L', -120256=>'L', -120257=>'L', -120258=>'L', -120259=>'L', -120260=>'L', -120261=>'L', -120262=>'L', -120263=>'L', -120264=>'L', -120265=>'L', -120266=>'L', -120267=>'L', -120268=>'L', -120269=>'L', -120270=>'L', -120271=>'L', -120272=>'L', -120273=>'L', -120274=>'L', -120275=>'L', -120276=>'L', -120277=>'L', -120278=>'L', -120279=>'L', -120280=>'L', -120281=>'L', -120282=>'L', -120283=>'L', -120284=>'L', -120285=>'L', -120286=>'L', -120287=>'L', -120288=>'L', -120289=>'L', -120290=>'L', -120291=>'L', -120292=>'L', -120293=>'L', -120294=>'L', -120295=>'L', -120296=>'L', -120297=>'L', -120298=>'L', -120299=>'L', -120300=>'L', -120301=>'L', -120302=>'L', -120303=>'L', -120304=>'L', -120305=>'L', -120306=>'L', -120307=>'L', -120308=>'L', -120309=>'L', -120310=>'L', -120311=>'L', -120312=>'L', -120313=>'L', -120314=>'L', -120315=>'L', -120316=>'L', -120317=>'L', -120318=>'L', -120319=>'L', -120320=>'L', -120321=>'L', -120322=>'L', -120323=>'L', -120324=>'L', -120325=>'L', -120326=>'L', -120327=>'L', -120328=>'L', -120329=>'L', -120330=>'L', -120331=>'L', -120332=>'L', -120333=>'L', -120334=>'L', -120335=>'L', -120336=>'L', -120337=>'L', -120338=>'L', -120339=>'L', -120340=>'L', -120341=>'L', -120342=>'L', -120343=>'L', -120344=>'L', -120345=>'L', -120346=>'L', -120347=>'L', -120348=>'L', -120349=>'L', -120350=>'L', -120351=>'L', -120352=>'L', -120353=>'L', -120354=>'L', -120355=>'L', -120356=>'L', -120357=>'L', -120358=>'L', -120359=>'L', -120360=>'L', -120361=>'L', -120362=>'L', -120363=>'L', -120364=>'L', -120365=>'L', -120366=>'L', -120367=>'L', -120368=>'L', -120369=>'L', -120370=>'L', -120371=>'L', -120372=>'L', -120373=>'L', -120374=>'L', -120375=>'L', -120376=>'L', -120377=>'L', -120378=>'L', -120379=>'L', -120380=>'L', -120381=>'L', -120382=>'L', -120383=>'L', -120384=>'L', -120385=>'L', -120386=>'L', -120387=>'L', -120388=>'L', -120389=>'L', -120390=>'L', -120391=>'L', -120392=>'L', -120393=>'L', -120394=>'L', -120395=>'L', -120396=>'L', -120397=>'L', -120398=>'L', -120399=>'L', -120400=>'L', -120401=>'L', -120402=>'L', -120403=>'L', -120404=>'L', -120405=>'L', -120406=>'L', -120407=>'L', -120408=>'L', -120409=>'L', -120410=>'L', -120411=>'L', -120412=>'L', -120413=>'L', -120414=>'L', -120415=>'L', -120416=>'L', -120417=>'L', -120418=>'L', -120419=>'L', -120420=>'L', -120421=>'L', -120422=>'L', -120423=>'L', -120424=>'L', -120425=>'L', -120426=>'L', -120427=>'L', -120428=>'L', -120429=>'L', -120430=>'L', -120431=>'L', -120432=>'L', -120433=>'L', -120434=>'L', -120435=>'L', -120436=>'L', -120437=>'L', -120438=>'L', -120439=>'L', -120440=>'L', -120441=>'L', -120442=>'L', -120443=>'L', -120444=>'L', -120445=>'L', -120446=>'L', -120447=>'L', -120448=>'L', -120449=>'L', -120450=>'L', -120451=>'L', -120452=>'L', -120453=>'L', -120454=>'L', -120455=>'L', -120456=>'L', -120457=>'L', -120458=>'L', -120459=>'L', -120460=>'L', -120461=>'L', -120462=>'L', -120463=>'L', -120464=>'L', -120465=>'L', -120466=>'L', -120467=>'L', -120468=>'L', -120469=>'L', -120470=>'L', -120471=>'L', -120472=>'L', -120473=>'L', -120474=>'L', -120475=>'L', -120476=>'L', -120477=>'L', -120478=>'L', -120479=>'L', -120480=>'L', -120481=>'L', -120482=>'L', -120483=>'L', -120484=>'L', -120485=>'L', -120488=>'L', -120489=>'L', -120490=>'L', -120491=>'L', -120492=>'L', -120493=>'L', -120494=>'L', -120495=>'L', -120496=>'L', -120497=>'L', -120498=>'L', -120499=>'L', -120500=>'L', -120501=>'L', -120502=>'L', -120503=>'L', -120504=>'L', -120505=>'L', -120506=>'L', -120507=>'L', -120508=>'L', -120509=>'L', -120510=>'L', -120511=>'L', -120512=>'L', -120513=>'L', -120514=>'L', -120515=>'L', -120516=>'L', -120517=>'L', -120518=>'L', -120519=>'L', -120520=>'L', -120521=>'L', -120522=>'L', -120523=>'L', -120524=>'L', -120525=>'L', -120526=>'L', -120527=>'L', -120528=>'L', -120529=>'L', -120530=>'L', -120531=>'L', -120532=>'L', -120533=>'L', -120534=>'L', -120535=>'L', -120536=>'L', -120537=>'L', -120538=>'L', -120539=>'L', -120540=>'L', -120541=>'L', -120542=>'L', -120543=>'L', -120544=>'L', -120545=>'L', -120546=>'L', -120547=>'L', -120548=>'L', -120549=>'L', -120550=>'L', -120551=>'L', -120552=>'L', -120553=>'L', -120554=>'L', -120555=>'L', -120556=>'L', -120557=>'L', -120558=>'L', -120559=>'L', -120560=>'L', -120561=>'L', -120562=>'L', -120563=>'L', -120564=>'L', -120565=>'L', -120566=>'L', -120567=>'L', -120568=>'L', -120569=>'L', -120570=>'L', -120571=>'L', -120572=>'L', -120573=>'L', -120574=>'L', -120575=>'L', -120576=>'L', -120577=>'L', -120578=>'L', -120579=>'L', -120580=>'L', -120581=>'L', -120582=>'L', -120583=>'L', -120584=>'L', -120585=>'L', -120586=>'L', -120587=>'L', -120588=>'L', -120589=>'L', -120590=>'L', -120591=>'L', -120592=>'L', -120593=>'L', -120594=>'L', -120595=>'L', -120596=>'L', -120597=>'L', -120598=>'L', -120599=>'L', -120600=>'L', -120601=>'L', -120602=>'L', -120603=>'L', -120604=>'L', -120605=>'L', -120606=>'L', -120607=>'L', -120608=>'L', -120609=>'L', -120610=>'L', -120611=>'L', -120612=>'L', -120613=>'L', -120614=>'L', -120615=>'L', -120616=>'L', -120617=>'L', -120618=>'L', -120619=>'L', -120620=>'L', -120621=>'L', -120622=>'L', -120623=>'L', -120624=>'L', -120625=>'L', -120626=>'L', -120627=>'L', -120628=>'L', -120629=>'L', -120630=>'L', -120631=>'L', -120632=>'L', -120633=>'L', -120634=>'L', -120635=>'L', -120636=>'L', -120637=>'L', -120638=>'L', -120639=>'L', -120640=>'L', -120641=>'L', -120642=>'L', -120643=>'L', -120644=>'L', -120645=>'L', -120646=>'L', -120647=>'L', -120648=>'L', -120649=>'L', -120650=>'L', -120651=>'L', -120652=>'L', -120653=>'L', -120654=>'L', -120655=>'L', -120656=>'L', -120657=>'L', -120658=>'L', -120659=>'L', -120660=>'L', -120661=>'L', -120662=>'L', -120663=>'L', -120664=>'L', -120665=>'L', -120666=>'L', -120667=>'L', -120668=>'L', -120669=>'L', -120670=>'L', -120671=>'L', -120672=>'L', -120673=>'L', -120674=>'L', -120675=>'L', -120676=>'L', -120677=>'L', -120678=>'L', -120679=>'L', -120680=>'L', -120681=>'L', -120682=>'L', -120683=>'L', -120684=>'L', -120685=>'L', -120686=>'L', -120687=>'L', -120688=>'L', -120689=>'L', -120690=>'L', -120691=>'L', -120692=>'L', -120693=>'L', -120694=>'L', -120695=>'L', -120696=>'L', -120697=>'L', -120698=>'L', -120699=>'L', -120700=>'L', -120701=>'L', -120702=>'L', -120703=>'L', -120704=>'L', -120705=>'L', -120706=>'L', -120707=>'L', -120708=>'L', -120709=>'L', -120710=>'L', -120711=>'L', -120712=>'L', -120713=>'L', -120714=>'L', -120715=>'L', -120716=>'L', -120717=>'L', -120718=>'L', -120719=>'L', -120720=>'L', -120721=>'L', -120722=>'L', -120723=>'L', -120724=>'L', -120725=>'L', -120726=>'L', -120727=>'L', -120728=>'L', -120729=>'L', -120730=>'L', -120731=>'L', -120732=>'L', -120733=>'L', -120734=>'L', -120735=>'L', -120736=>'L', -120737=>'L', -120738=>'L', -120739=>'L', -120740=>'L', -120741=>'L', -120742=>'L', -120743=>'L', -120744=>'L', -120745=>'L', -120746=>'L', -120747=>'L', -120748=>'L', -120749=>'L', -120750=>'L', -120751=>'L', -120752=>'L', -120753=>'L', -120754=>'L', -120755=>'L', -120756=>'L', -120757=>'L', -120758=>'L', -120759=>'L', -120760=>'L', -120761=>'L', -120762=>'L', -120763=>'L', -120764=>'L', -120765=>'L', -120766=>'L', -120767=>'L', -120768=>'L', -120769=>'L', -120770=>'L', -120771=>'L', -120772=>'L', -120773=>'L', -120774=>'L', -120775=>'L', -120776=>'L', -120777=>'L', -120778=>'L', -120779=>'L', -120782=>'EN', -120783=>'EN', -120784=>'EN', -120785=>'EN', -120786=>'EN', -120787=>'EN', -120788=>'EN', -120789=>'EN', -120790=>'EN', -120791=>'EN', -120792=>'EN', -120793=>'EN', -120794=>'EN', -120795=>'EN', -120796=>'EN', -120797=>'EN', -120798=>'EN', -120799=>'EN', -120800=>'EN', -120801=>'EN', -120802=>'EN', -120803=>'EN', -120804=>'EN', -120805=>'EN', -120806=>'EN', -120807=>'EN', -120808=>'EN', -120809=>'EN', -120810=>'EN', -120811=>'EN', -120812=>'EN', -120813=>'EN', -120814=>'EN', -120815=>'EN', -120816=>'EN', -120817=>'EN', -120818=>'EN', -120819=>'EN', -120820=>'EN', -120821=>'EN', -120822=>'EN', -120823=>'EN', -120824=>'EN', -120825=>'EN', -120826=>'EN', -120827=>'EN', -120828=>'EN', -120829=>'EN', -120830=>'EN', -120831=>'EN', -131072=>'L', -173782=>'L', -194560=>'L', -194561=>'L', -194562=>'L', -194563=>'L', -194564=>'L', -194565=>'L', -194566=>'L', -194567=>'L', -194568=>'L', -194569=>'L', -194570=>'L', -194571=>'L', -194572=>'L', -194573=>'L', -194574=>'L', -194575=>'L', -194576=>'L', -194577=>'L', -194578=>'L', -194579=>'L', -194580=>'L', -194581=>'L', -194582=>'L', -194583=>'L', -194584=>'L', -194585=>'L', -194586=>'L', -194587=>'L', -194588=>'L', -194589=>'L', -194590=>'L', -194591=>'L', -194592=>'L', -194593=>'L', -194594=>'L', -194595=>'L', -194596=>'L', -194597=>'L', -194598=>'L', -194599=>'L', -194600=>'L', -194601=>'L', -194602=>'L', -194603=>'L', -194604=>'L', -194605=>'L', -194606=>'L', -194607=>'L', -194608=>'L', -194609=>'L', -194610=>'L', -194611=>'L', -194612=>'L', -194613=>'L', -194614=>'L', -194615=>'L', -194616=>'L', -194617=>'L', -194618=>'L', -194619=>'L', -194620=>'L', -194621=>'L', -194622=>'L', -194623=>'L', -194624=>'L', -194625=>'L', -194626=>'L', -194627=>'L', -194628=>'L', -194629=>'L', -194630=>'L', -194631=>'L', -194632=>'L', -194633=>'L', -194634=>'L', -194635=>'L', -194636=>'L', -194637=>'L', -194638=>'L', -194639=>'L', -194640=>'L', -194641=>'L', -194642=>'L', -194643=>'L', -194644=>'L', -194645=>'L', -194646=>'L', -194647=>'L', -194648=>'L', -194649=>'L', -194650=>'L', -194651=>'L', -194652=>'L', -194653=>'L', -194654=>'L', -194655=>'L', -194656=>'L', -194657=>'L', -194658=>'L', -194659=>'L', -194660=>'L', -194661=>'L', -194662=>'L', -194663=>'L', -194664=>'L', -194665=>'L', -194666=>'L', -194667=>'L', -194668=>'L', -194669=>'L', -194670=>'L', -194671=>'L', -194672=>'L', -194673=>'L', -194674=>'L', -194675=>'L', -194676=>'L', -194677=>'L', -194678=>'L', -194679=>'L', -194680=>'L', -194681=>'L', -194682=>'L', -194683=>'L', -194684=>'L', -194685=>'L', -194686=>'L', -194687=>'L', -194688=>'L', -194689=>'L', -194690=>'L', -194691=>'L', -194692=>'L', -194693=>'L', -194694=>'L', -194695=>'L', -194696=>'L', -194697=>'L', -194698=>'L', -194699=>'L', -194700=>'L', -194701=>'L', -194702=>'L', -194703=>'L', -194704=>'L', -194705=>'L', -194706=>'L', -194707=>'L', -194708=>'L', -194709=>'L', -194710=>'L', -194711=>'L', -194712=>'L', -194713=>'L', -194714=>'L', -194715=>'L', -194716=>'L', -194717=>'L', -194718=>'L', -194719=>'L', -194720=>'L', -194721=>'L', -194722=>'L', -194723=>'L', -194724=>'L', -194725=>'L', -194726=>'L', -194727=>'L', -194728=>'L', -194729=>'L', -194730=>'L', -194731=>'L', -194732=>'L', -194733=>'L', -194734=>'L', -194735=>'L', -194736=>'L', -194737=>'L', -194738=>'L', -194739=>'L', -194740=>'L', -194741=>'L', -194742=>'L', -194743=>'L', -194744=>'L', -194745=>'L', -194746=>'L', -194747=>'L', -194748=>'L', -194749=>'L', -194750=>'L', -194751=>'L', -194752=>'L', -194753=>'L', -194754=>'L', -194755=>'L', -194756=>'L', -194757=>'L', -194758=>'L', -194759=>'L', -194760=>'L', -194761=>'L', -194762=>'L', -194763=>'L', -194764=>'L', -194765=>'L', -194766=>'L', -194767=>'L', -194768=>'L', -194769=>'L', -194770=>'L', -194771=>'L', -194772=>'L', -194773=>'L', -194774=>'L', -194775=>'L', -194776=>'L', -194777=>'L', -194778=>'L', -194779=>'L', -194780=>'L', -194781=>'L', -194782=>'L', -194783=>'L', -194784=>'L', -194785=>'L', -194786=>'L', -194787=>'L', -194788=>'L', -194789=>'L', -194790=>'L', -194791=>'L', -194792=>'L', -194793=>'L', -194794=>'L', -194795=>'L', -194796=>'L', -194797=>'L', -194798=>'L', -194799=>'L', -194800=>'L', -194801=>'L', -194802=>'L', -194803=>'L', -194804=>'L', -194805=>'L', -194806=>'L', -194807=>'L', -194808=>'L', -194809=>'L', -194810=>'L', -194811=>'L', -194812=>'L', -194813=>'L', -194814=>'L', -194815=>'L', -194816=>'L', -194817=>'L', -194818=>'L', -194819=>'L', -194820=>'L', -194821=>'L', -194822=>'L', -194823=>'L', -194824=>'L', -194825=>'L', -194826=>'L', -194827=>'L', -194828=>'L', -194829=>'L', -194830=>'L', -194831=>'L', -194832=>'L', -194833=>'L', -194834=>'L', -194835=>'L', -194836=>'L', -194837=>'L', -194838=>'L', -194839=>'L', -194840=>'L', -194841=>'L', -194842=>'L', -194843=>'L', -194844=>'L', -194845=>'L', -194846=>'L', -194847=>'L', -194848=>'L', -194849=>'L', -194850=>'L', -194851=>'L', -194852=>'L', -194853=>'L', -194854=>'L', -194855=>'L', -194856=>'L', -194857=>'L', -194858=>'L', -194859=>'L', -194860=>'L', -194861=>'L', -194862=>'L', -194863=>'L', -194864=>'L', -194865=>'L', -194866=>'L', -194867=>'L', -194868=>'L', -194869=>'L', -194870=>'L', -194871=>'L', -194872=>'L', -194873=>'L', -194874=>'L', -194875=>'L', -194876=>'L', -194877=>'L', -194878=>'L', -194879=>'L', -194880=>'L', -194881=>'L', -194882=>'L', -194883=>'L', -194884=>'L', -194885=>'L', -194886=>'L', -194887=>'L', -194888=>'L', -194889=>'L', -194890=>'L', -194891=>'L', -194892=>'L', -194893=>'L', -194894=>'L', -194895=>'L', -194896=>'L', -194897=>'L', -194898=>'L', -194899=>'L', -194900=>'L', -194901=>'L', -194902=>'L', -194903=>'L', -194904=>'L', -194905=>'L', -194906=>'L', -194907=>'L', -194908=>'L', -194909=>'L', -194910=>'L', -194911=>'L', -194912=>'L', -194913=>'L', -194914=>'L', -194915=>'L', -194916=>'L', -194917=>'L', -194918=>'L', -194919=>'L', -194920=>'L', -194921=>'L', -194922=>'L', -194923=>'L', -194924=>'L', -194925=>'L', -194926=>'L', -194927=>'L', -194928=>'L', -194929=>'L', -194930=>'L', -194931=>'L', -194932=>'L', -194933=>'L', -194934=>'L', -194935=>'L', -194936=>'L', -194937=>'L', -194938=>'L', -194939=>'L', -194940=>'L', -194941=>'L', -194942=>'L', -194943=>'L', -194944=>'L', -194945=>'L', -194946=>'L', -194947=>'L', -194948=>'L', -194949=>'L', -194950=>'L', -194951=>'L', -194952=>'L', -194953=>'L', -194954=>'L', -194955=>'L', -194956=>'L', -194957=>'L', -194958=>'L', -194959=>'L', -194960=>'L', -194961=>'L', -194962=>'L', -194963=>'L', -194964=>'L', -194965=>'L', -194966=>'L', -194967=>'L', -194968=>'L', -194969=>'L', -194970=>'L', -194971=>'L', -194972=>'L', -194973=>'L', -194974=>'L', -194975=>'L', -194976=>'L', -194977=>'L', -194978=>'L', -194979=>'L', -194980=>'L', -194981=>'L', -194982=>'L', -194983=>'L', -194984=>'L', -194985=>'L', -194986=>'L', -194987=>'L', -194988=>'L', -194989=>'L', -194990=>'L', -194991=>'L', -194992=>'L', -194993=>'L', -194994=>'L', -194995=>'L', -194996=>'L', -194997=>'L', -194998=>'L', -194999=>'L', -195000=>'L', -195001=>'L', -195002=>'L', -195003=>'L', -195004=>'L', -195005=>'L', -195006=>'L', -195007=>'L', -195008=>'L', -195009=>'L', -195010=>'L', -195011=>'L', -195012=>'L', -195013=>'L', -195014=>'L', -195015=>'L', -195016=>'L', -195017=>'L', -195018=>'L', -195019=>'L', -195020=>'L', -195021=>'L', -195022=>'L', -195023=>'L', -195024=>'L', -195025=>'L', -195026=>'L', -195027=>'L', -195028=>'L', -195029=>'L', -195030=>'L', -195031=>'L', -195032=>'L', -195033=>'L', -195034=>'L', -195035=>'L', -195036=>'L', -195037=>'L', -195038=>'L', -195039=>'L', -195040=>'L', -195041=>'L', -195042=>'L', -195043=>'L', -195044=>'L', -195045=>'L', -195046=>'L', -195047=>'L', -195048=>'L', -195049=>'L', -195050=>'L', -195051=>'L', -195052=>'L', -195053=>'L', -195054=>'L', -195055=>'L', -195056=>'L', -195057=>'L', -195058=>'L', -195059=>'L', -195060=>'L', -195061=>'L', -195062=>'L', -195063=>'L', -195064=>'L', -195065=>'L', -195066=>'L', -195067=>'L', -195068=>'L', -195069=>'L', -195070=>'L', -195071=>'L', -195072=>'L', -195073=>'L', -195074=>'L', -195075=>'L', -195076=>'L', -195077=>'L', -195078=>'L', -195079=>'L', -195080=>'L', -195081=>'L', -195082=>'L', -195083=>'L', -195084=>'L', -195085=>'L', -195086=>'L', -195087=>'L', -195088=>'L', -195089=>'L', -195090=>'L', -195091=>'L', -195092=>'L', -195093=>'L', -195094=>'L', -195095=>'L', -195096=>'L', -195097=>'L', -195098=>'L', -195099=>'L', -195100=>'L', -195101=>'L', -917505=>'BN', -917536=>'BN', -917537=>'BN', -917538=>'BN', -917539=>'BN', -917540=>'BN', -917541=>'BN', -917542=>'BN', -917543=>'BN', -917544=>'BN', -917545=>'BN', -917546=>'BN', -917547=>'BN', -917548=>'BN', -917549=>'BN', -917550=>'BN', -917551=>'BN', -917552=>'BN', -917553=>'BN', -917554=>'BN', -917555=>'BN', -917556=>'BN', -917557=>'BN', -917558=>'BN', -917559=>'BN', -917560=>'BN', -917561=>'BN', -917562=>'BN', -917563=>'BN', -917564=>'BN', -917565=>'BN', -917566=>'BN', -917567=>'BN', -917568=>'BN', -917569=>'BN', -917570=>'BN', -917571=>'BN', -917572=>'BN', -917573=>'BN', -917574=>'BN', -917575=>'BN', -917576=>'BN', -917577=>'BN', -917578=>'BN', -917579=>'BN', -917580=>'BN', -917581=>'BN', -917582=>'BN', -917583=>'BN', -917584=>'BN', -917585=>'BN', -917586=>'BN', -917587=>'BN', -917588=>'BN', -917589=>'BN', -917590=>'BN', -917591=>'BN', -917592=>'BN', -917593=>'BN', -917594=>'BN', -917595=>'BN', -917596=>'BN', -917597=>'BN', -917598=>'BN', -917599=>'BN', -917600=>'BN', -917601=>'BN', -917602=>'BN', -917603=>'BN', -917604=>'BN', -917605=>'BN', -917606=>'BN', -917607=>'BN', -917608=>'BN', -917609=>'BN', -917610=>'BN', -917611=>'BN', -917612=>'BN', -917613=>'BN', -917614=>'BN', -917615=>'BN', -917616=>'BN', -917617=>'BN', -917618=>'BN', -917619=>'BN', -917620=>'BN', -917621=>'BN', -917622=>'BN', -917623=>'BN', -917624=>'BN', -917625=>'BN', -917626=>'BN', -917627=>'BN', -917628=>'BN', -917629=>'BN', -917630=>'BN', -917631=>'BN', -917760=>'NSM', -917761=>'NSM', -917762=>'NSM', -917763=>'NSM', -917764=>'NSM', -917765=>'NSM', -917766=>'NSM', -917767=>'NSM', -917768=>'NSM', -917769=>'NSM', -917770=>'NSM', -917771=>'NSM', -917772=>'NSM', -917773=>'NSM', -917774=>'NSM', -917775=>'NSM', -917776=>'NSM', -917777=>'NSM', -917778=>'NSM', -917779=>'NSM', -917780=>'NSM', -917781=>'NSM', -917782=>'NSM', -917783=>'NSM', -917784=>'NSM', -917785=>'NSM', -917786=>'NSM', -917787=>'NSM', -917788=>'NSM', -917789=>'NSM', -917790=>'NSM', -917791=>'NSM', -917792=>'NSM', -917793=>'NSM', -917794=>'NSM', -917795=>'NSM', -917796=>'NSM', -917797=>'NSM', -917798=>'NSM', -917799=>'NSM', -917800=>'NSM', -917801=>'NSM', -917802=>'NSM', -917803=>'NSM', -917804=>'NSM', -917805=>'NSM', -917806=>'NSM', -917807=>'NSM', -917808=>'NSM', -917809=>'NSM', -917810=>'NSM', -917811=>'NSM', -917812=>'NSM', -917813=>'NSM', -917814=>'NSM', -917815=>'NSM', -917816=>'NSM', -917817=>'NSM', -917818=>'NSM', -917819=>'NSM', -917820=>'NSM', -917821=>'NSM', -917822=>'NSM', -917823=>'NSM', -917824=>'NSM', -917825=>'NSM', -917826=>'NSM', -917827=>'NSM', -917828=>'NSM', -917829=>'NSM', -917830=>'NSM', -917831=>'NSM', -917832=>'NSM', -917833=>'NSM', -917834=>'NSM', -917835=>'NSM', -917836=>'NSM', -917837=>'NSM', -917838=>'NSM', -917839=>'NSM', -917840=>'NSM', -917841=>'NSM', -917842=>'NSM', -917843=>'NSM', -917844=>'NSM', -917845=>'NSM', -917846=>'NSM', -917847=>'NSM', -917848=>'NSM', -917849=>'NSM', -917850=>'NSM', -917851=>'NSM', -917852=>'NSM', -917853=>'NSM', -917854=>'NSM', -917855=>'NSM', -917856=>'NSM', -917857=>'NSM', -917858=>'NSM', -917859=>'NSM', -917860=>'NSM', -917861=>'NSM', -917862=>'NSM', -917863=>'NSM', -917864=>'NSM', -917865=>'NSM', -917866=>'NSM', -917867=>'NSM', -917868=>'NSM', -917869=>'NSM', -917870=>'NSM', -917871=>'NSM', -917872=>'NSM', -917873=>'NSM', -917874=>'NSM', -917875=>'NSM', -917876=>'NSM', -917877=>'NSM', -917878=>'NSM', -917879=>'NSM', -917880=>'NSM', -917881=>'NSM', -917882=>'NSM', -917883=>'NSM', -917884=>'NSM', -917885=>'NSM', -917886=>'NSM', -917887=>'NSM', -917888=>'NSM', -917889=>'NSM', -917890=>'NSM', -917891=>'NSM', -917892=>'NSM', -917893=>'NSM', -917894=>'NSM', -917895=>'NSM', -917896=>'NSM', -917897=>'NSM', -917898=>'NSM', -917899=>'NSM', -917900=>'NSM', -917901=>'NSM', -917902=>'NSM', -917903=>'NSM', -917904=>'NSM', -917905=>'NSM', -917906=>'NSM', -917907=>'NSM', -917908=>'NSM', -917909=>'NSM', -917910=>'NSM', -917911=>'NSM', -917912=>'NSM', -917913=>'NSM', -917914=>'NSM', -917915=>'NSM', -917916=>'NSM', -917917=>'NSM', -917918=>'NSM', -917919=>'NSM', -917920=>'NSM', -917921=>'NSM', -917922=>'NSM', -917923=>'NSM', -917924=>'NSM', -917925=>'NSM', -917926=>'NSM', -917927=>'NSM', -917928=>'NSM', -917929=>'NSM', -917930=>'NSM', -917931=>'NSM', -917932=>'NSM', -917933=>'NSM', -917934=>'NSM', -917935=>'NSM', -917936=>'NSM', -917937=>'NSM', -917938=>'NSM', -917939=>'NSM', -917940=>'NSM', -917941=>'NSM', -917942=>'NSM', -917943=>'NSM', -917944=>'NSM', -917945=>'NSM', -917946=>'NSM', -917947=>'NSM', -917948=>'NSM', -917949=>'NSM', -917950=>'NSM', -917951=>'NSM', -917952=>'NSM', -917953=>'NSM', -917954=>'NSM', -917955=>'NSM', -917956=>'NSM', -917957=>'NSM', -917958=>'NSM', -917959=>'NSM', -917960=>'NSM', -917961=>'NSM', -917962=>'NSM', -917963=>'NSM', -917964=>'NSM', -917965=>'NSM', -917966=>'NSM', -917967=>'NSM', -917968=>'NSM', -917969=>'NSM', -917970=>'NSM', -917971=>'NSM', -917972=>'NSM', -917973=>'NSM', -917974=>'NSM', -917975=>'NSM', -917976=>'NSM', -917977=>'NSM', -917978=>'NSM', -917979=>'NSM', -917980=>'NSM', -917981=>'NSM', -917982=>'NSM', -917983=>'NSM', -917984=>'NSM', -917985=>'NSM', -917986=>'NSM', -917987=>'NSM', -917988=>'NSM', -917989=>'NSM', -917990=>'NSM', -917991=>'NSM', -917992=>'NSM', -917993=>'NSM', -917994=>'NSM', -917995=>'NSM', -917996=>'NSM', -917997=>'NSM', -917998=>'NSM', -917999=>'NSM', -983040=>'L', -1048573=>'L', -1048576=>'L', -1114109=>'L' -); - -/** - * Mirror unicode characters. For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/ - * @public - */ -public static $uni_mirror = array ( -0x0028=>0x0029, -0x0029=>0x0028, -0x003C=>0x003E, -0x003E=>0x003C, -0x005B=>0x005D, -0x005D=>0x005B, -0x007B=>0x007D, -0x007D=>0x007B, -0x00AB=>0x00BB, -0x00BB=>0x00AB, -0x0F3A=>0x0F3B, -0x0F3B=>0x0F3A, -0x0F3C=>0x0F3D, -0x0F3D=>0x0F3C, -0x169B=>0x169C, -0x169C=>0x169B, -0x2018=>0x2019, -0x2019=>0x2018, -0x201C=>0x201D, -0x201D=>0x201C, -0x2039=>0x203A, -0x203A=>0x2039, -0x2045=>0x2046, -0x2046=>0x2045, -0x207D=>0x207E, -0x207E=>0x207D, -0x208D=>0x208E, -0x208E=>0x208D, -0x2208=>0x220B, -0x2209=>0x220C, -0x220A=>0x220D, -0x220B=>0x2208, -0x220C=>0x2209, -0x220D=>0x220A, -0x2215=>0x29F5, -0x223C=>0x223D, -0x223D=>0x223C, -0x2243=>0x22CD, -0x2252=>0x2253, -0x2253=>0x2252, -0x2254=>0x2255, -0x2255=>0x2254, -0x2264=>0x2265, -0x2265=>0x2264, -0x2266=>0x2267, -0x2267=>0x2266, -0x2268=>0x2269, -0x2269=>0x2268, -0x226A=>0x226B, -0x226B=>0x226A, -0x226E=>0x226F, -0x226F=>0x226E, -0x2270=>0x2271, -0x2271=>0x2270, -0x2272=>0x2273, -0x2273=>0x2272, -0x2274=>0x2275, -0x2275=>0x2274, -0x2276=>0x2277, -0x2277=>0x2276, -0x2278=>0x2279, -0x2279=>0x2278, -0x227A=>0x227B, -0x227B=>0x227A, -0x227C=>0x227D, -0x227D=>0x227C, -0x227E=>0x227F, -0x227F=>0x227E, -0x2280=>0x2281, -0x2281=>0x2280, -0x2282=>0x2283, -0x2283=>0x2282, -0x2284=>0x2285, -0x2285=>0x2284, -0x2286=>0x2287, -0x2287=>0x2286, -0x2288=>0x2289, -0x2289=>0x2288, -0x228A=>0x228B, -0x228B=>0x228A, -0x228F=>0x2290, -0x2290=>0x228F, -0x2291=>0x2292, -0x2292=>0x2291, -0x2298=>0x29B8, -0x22A2=>0x22A3, -0x22A3=>0x22A2, -0x22A6=>0x2ADE, -0x22A8=>0x2AE4, -0x22A9=>0x2AE3, -0x22AB=>0x2AE5, -0x22B0=>0x22B1, -0x22B1=>0x22B0, -0x22B2=>0x22B3, -0x22B3=>0x22B2, -0x22B4=>0x22B5, -0x22B5=>0x22B4, -0x22B6=>0x22B7, -0x22B7=>0x22B6, -0x22C9=>0x22CA, -0x22CA=>0x22C9, -0x22CB=>0x22CC, -0x22CC=>0x22CB, -0x22CD=>0x2243, -0x22D0=>0x22D1, -0x22D1=>0x22D0, -0x22D6=>0x22D7, -0x22D7=>0x22D6, -0x22D8=>0x22D9, -0x22D9=>0x22D8, -0x22DA=>0x22DB, -0x22DB=>0x22DA, -0x22DC=>0x22DD, -0x22DD=>0x22DC, -0x22DE=>0x22DF, -0x22DF=>0x22DE, -0x22E0=>0x22E1, -0x22E1=>0x22E0, -0x22E2=>0x22E3, -0x22E3=>0x22E2, -0x22E4=>0x22E5, -0x22E5=>0x22E4, -0x22E6=>0x22E7, -0x22E7=>0x22E6, -0x22E8=>0x22E9, -0x22E9=>0x22E8, -0x22EA=>0x22EB, -0x22EB=>0x22EA, -0x22EC=>0x22ED, -0x22ED=>0x22EC, -0x22F0=>0x22F1, -0x22F1=>0x22F0, -0x22F2=>0x22FA, -0x22F3=>0x22FB, -0x22F4=>0x22FC, -0x22F6=>0x22FD, -0x22F7=>0x22FE, -0x22FA=>0x22F2, -0x22FB=>0x22F3, -0x22FC=>0x22F4, -0x22FD=>0x22F6, -0x22FE=>0x22F7, -0x2308=>0x2309, -0x2309=>0x2308, -0x230A=>0x230B, -0x230B=>0x230A, -0x2329=>0x232A, -0x232A=>0x2329, -0x2768=>0x2769, -0x2769=>0x2768, -0x276A=>0x276B, -0x276B=>0x276A, -0x276C=>0x276D, -0x276D=>0x276C, -0x276E=>0x276F, -0x276F=>0x276E, -0x2770=>0x2771, -0x2771=>0x2770, -0x2772=>0x2773, -0x2773=>0x2772, -0x2774=>0x2775, -0x2775=>0x2774, -0x27C3=>0x27C4, -0x27C4=>0x27C3, -0x27C5=>0x27C6, -0x27C6=>0x27C5, -0x27D5=>0x27D6, -0x27D6=>0x27D5, -0x27DD=>0x27DE, -0x27DE=>0x27DD, -0x27E2=>0x27E3, -0x27E3=>0x27E2, -0x27E4=>0x27E5, -0x27E5=>0x27E4, -0x27E6=>0x27E7, -0x27E7=>0x27E6, -0x27E8=>0x27E9, -0x27E9=>0x27E8, -0x27EA=>0x27EB, -0x27EB=>0x27EA, -0x2983=>0x2984, -0x2984=>0x2983, -0x2985=>0x2986, -0x2986=>0x2985, -0x2987=>0x2988, -0x2988=>0x2987, -0x2989=>0x298A, -0x298A=>0x2989, -0x298B=>0x298C, -0x298C=>0x298B, -0x298D=>0x2990, -0x298E=>0x298F, -0x298F=>0x298E, -0x2990=>0x298D, -0x2991=>0x2992, -0x2992=>0x2991, -0x2993=>0x2994, -0x2994=>0x2993, -0x2995=>0x2996, -0x2996=>0x2995, -0x2997=>0x2998, -0x2998=>0x2997, -0x29B8=>0x2298, -0x29C0=>0x29C1, -0x29C1=>0x29C0, -0x29C4=>0x29C5, -0x29C5=>0x29C4, -0x29CF=>0x29D0, -0x29D0=>0x29CF, -0x29D1=>0x29D2, -0x29D2=>0x29D1, -0x29D4=>0x29D5, -0x29D5=>0x29D4, -0x29D8=>0x29D9, -0x29D9=>0x29D8, -0x29DA=>0x29DB, -0x29DB=>0x29DA, -0x29F5=>0x2215, -0x29F8=>0x29F9, -0x29F9=>0x29F8, -0x29FC=>0x29FD, -0x29FD=>0x29FC, -0x2A2B=>0x2A2C, -0x2A2C=>0x2A2B, -0x2A2D=>0x2A2E, -0x2A2E=>0x2A2D, -0x2A34=>0x2A35, -0x2A35=>0x2A34, -0x2A3C=>0x2A3D, -0x2A3D=>0x2A3C, -0x2A64=>0x2A65, -0x2A65=>0x2A64, -0x2A79=>0x2A7A, -0x2A7A=>0x2A79, -0x2A7D=>0x2A7E, -0x2A7E=>0x2A7D, -0x2A7F=>0x2A80, -0x2A80=>0x2A7F, -0x2A81=>0x2A82, -0x2A82=>0x2A81, -0x2A83=>0x2A84, -0x2A84=>0x2A83, -0x2A8B=>0x2A8C, -0x2A8C=>0x2A8B, -0x2A91=>0x2A92, -0x2A92=>0x2A91, -0x2A93=>0x2A94, -0x2A94=>0x2A93, -0x2A95=>0x2A96, -0x2A96=>0x2A95, -0x2A97=>0x2A98, -0x2A98=>0x2A97, -0x2A99=>0x2A9A, -0x2A9A=>0x2A99, -0x2A9B=>0x2A9C, -0x2A9C=>0x2A9B, -0x2AA1=>0x2AA2, -0x2AA2=>0x2AA1, -0x2AA6=>0x2AA7, -0x2AA7=>0x2AA6, -0x2AA8=>0x2AA9, -0x2AA9=>0x2AA8, -0x2AAA=>0x2AAB, -0x2AAB=>0x2AAA, -0x2AAC=>0x2AAD, -0x2AAD=>0x2AAC, -0x2AAF=>0x2AB0, -0x2AB0=>0x2AAF, -0x2AB3=>0x2AB4, -0x2AB4=>0x2AB3, -0x2ABB=>0x2ABC, -0x2ABC=>0x2ABB, -0x2ABD=>0x2ABE, -0x2ABE=>0x2ABD, -0x2ABF=>0x2AC0, -0x2AC0=>0x2ABF, -0x2AC1=>0x2AC2, -0x2AC2=>0x2AC1, -0x2AC3=>0x2AC4, -0x2AC4=>0x2AC3, -0x2AC5=>0x2AC6, -0x2AC6=>0x2AC5, -0x2ACD=>0x2ACE, -0x2ACE=>0x2ACD, -0x2ACF=>0x2AD0, -0x2AD0=>0x2ACF, -0x2AD1=>0x2AD2, -0x2AD2=>0x2AD1, -0x2AD3=>0x2AD4, -0x2AD4=>0x2AD3, -0x2AD5=>0x2AD6, -0x2AD6=>0x2AD5, -0x2ADE=>0x22A6, -0x2AE3=>0x22A9, -0x2AE4=>0x22A8, -0x2AE5=>0x22AB, -0x2AEC=>0x2AED, -0x2AED=>0x2AEC, -0x2AF7=>0x2AF8, -0x2AF8=>0x2AF7, -0x2AF9=>0x2AFA, -0x2AFA=>0x2AF9, -0x2E02=>0x2E03, -0x2E03=>0x2E02, -0x2E04=>0x2E05, -0x2E05=>0x2E04, -0x2E09=>0x2E0A, -0x2E0A=>0x2E09, -0x2E0C=>0x2E0D, -0x2E0D=>0x2E0C, -0x2E1C=>0x2E1D, -0x2E1D=>0x2E1C, -0x3008=>0x3009, -0x3009=>0x3008, -0x300A=>0x300B, -0x300B=>0x300A, -0x300C=>0x300D, -0x300D=>0x300C, -0x300E=>0x300F, -0x300F=>0x300E, -0x3010=>0x3011, -0x3011=>0x3010, -0x3014=>0x3015, -0x3015=>0x3014, -0x3016=>0x3017, -0x3017=>0x3016, -0x3018=>0x3019, -0x3019=>0x3018, -0x301A=>0x301B, -0x301B=>0x301A, -0x301D=>0x301E, -0x301E=>0x301D, -0xFE59=>0xFE5A, -0xFE5A=>0xFE59, -0xFE5B=>0xFE5C, -0xFE5C=>0xFE5B, -0xFE5D=>0xFE5E, -0xFE5E=>0xFE5D, -0xFE64=>0xFE65, -0xFE65=>0xFE64, -0xFF08=>0xFF09, -0xFF09=>0xFF08, -0xFF1C=>0xFF1E, -0xFF1E=>0xFF1C, -0xFF3B=>0xFF3D, -0xFF3D=>0xFF3B, -0xFF5B=>0xFF5D, -0xFF5D=>0xFF5B, -0xFF5F=>0xFF60, -0xFF60=>0xFF5F, -0xFF62=>0xFF63, -0xFF63=>0xFF62); - -/** - * Arabic shape substitutions: char code => (isolated, final, initial, medial). - * @public - */ -public static $uni_arabicsubst = array( -1569=>array(65152), -1570=>array(65153, 65154, 65153, 65154), -1571=>array(65155, 65156, 65155, 65156), -1572=>array(65157, 65158), -1573=>array(65159, 65160, 65159, 65160), -1574=>array(65161, 65162, 65163, 65164), -1575=>array(65165, 65166, 65165, 65166), -1576=>array(65167, 65168, 65169, 65170), -1577=>array(65171, 65172), -1578=>array(65173, 65174, 65175, 65176), -1579=>array(65177, 65178, 65179, 65180), -1580=>array(65181, 65182, 65183, 65184), -1581=>array(65185, 65186, 65187, 65188), -1582=>array(65189, 65190, 65191, 65192), -1583=>array(65193, 65194, 65193, 65194), -1584=>array(65195, 65196, 65195, 65196), -1585=>array(65197, 65198, 65197, 65198), -1586=>array(65199, 65200, 65199, 65200), -1587=>array(65201, 65202, 65203, 65204), -1588=>array(65205, 65206, 65207, 65208), -1589=>array(65209, 65210, 65211, 65212), -1590=>array(65213, 65214, 65215, 65216), -1591=>array(65217, 65218, 65219, 65220), -1592=>array(65221, 65222, 65223, 65224), -1593=>array(65225, 65226, 65227, 65228), -1594=>array(65229, 65230, 65231, 65232), -1601=>array(65233, 65234, 65235, 65236), -1602=>array(65237, 65238, 65239, 65240), -1603=>array(65241, 65242, 65243, 65244), -1604=>array(65245, 65246, 65247, 65248), -1605=>array(65249, 65250, 65251, 65252), -1606=>array(65253, 65254, 65255, 65256), -1607=>array(65257, 65258, 65259, 65260), -1608=>array(65261, 65262, 65261, 65262), -1609=>array(65263, 65264, 64488, 64489), -1610=>array(65265, 65266, 65267, 65268), -1649=>array(64336, 64337), -1655=>array(64477), -1657=>array(64358, 64359, 64360, 64361), -1658=>array(64350, 64351, 64352, 64353), -1659=>array(64338, 64339, 64340, 64341), -1662=>array(64342, 64343, 64344, 64345), -1663=>array(64354, 64355, 64356, 64357), -1664=>array(64346, 64347, 64348, 64349), -1667=>array(64374, 64375, 64376, 64377), -1668=>array(64370, 64371, 64372, 64373), -1670=>array(64378, 64379, 64380, 64381), -1671=>array(64382, 64383, 64384, 64385), -1672=>array(64392, 64393), -1676=>array(64388, 64389), -1677=>array(64386, 64387), -1678=>array(64390, 64391), -1681=>array(64396, 64397), -1688=>array(64394, 64395, 64394, 64395), -1700=>array(64362, 64363, 64364, 64365), -1702=>array(64366, 64367, 64368, 64369), -1705=>array(64398, 64399, 64400, 64401), -1709=>array(64467, 64468, 64469, 64470), -1711=>array(64402, 64403, 64404, 64405), -1713=>array(64410, 64411, 64412, 64413), -1715=>array(64406, 64407, 64408, 64409), -1722=>array(64414, 64415), -1723=>array(64416, 64417, 64418, 64419), -1726=>array(64426, 64427, 64428, 64429), -1728=>array(64420, 64421), -1729=>array(64422, 64423, 64424, 64425), -1733=>array(64480, 64481), -1734=>array(64473, 64474), -1735=>array(64471, 64472), -1736=>array(64475, 64476), -1737=>array(64482, 64483), -1739=>array(64478, 64479), -1740=>array(64508, 64509, 64510, 64511), -1744=>array(64484, 64485, 64486, 64487), -1746=>array(64430, 64431), -1747=>array(64432, 64433) -); - -/** - * Arabic laa letter: (char code => isolated, final, initial, medial). - * @public - */ -public static $uni_laa_array = array ( -1570 =>array(65269, 65270, 65269, 65270), -1571 =>array(65271, 65272, 65271, 65272), -1573 =>array(65273, 65274, 65273, 65274), -1575 =>array(65275, 65276, 65275, 65276) -); - -/** - * Array of character substitutions for sequences of two diacritics symbols. - * Putting the combining mark and character in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner. - * second NSM char code => substitution char - * @public - */ -public static $uni_diacritics = array ( -1612=>64606, # Shadda + Dammatan -1613=>64607, # Shadda + Kasratan -1614=>64608, # Shadda + Fatha -1615=>64609, # Shadda + Damma -1616=>64610 # Shadda + Kasra -); - -/** - * Array of character substitutions from UTF-8 Unicode to Latin1. - * @public - */ -public static $uni_utf8tolatin = array ( -8364=>128, # Euro1 -338=>140, # OE -352=>138, # Scaron -376=>159, # Ydieresis -381=>142, # Zcaron2 -8226=>149, # bullet3 -710=>136, # circumflex -8224=>134, # dagger -8225=>135, # daggerdbl -8230=>133, # ellipsis -8212=>151, # emdash -8211=>150, # endash -402=>131, # florin -8249=>139, # guilsinglleft -8250=>155, # guilsinglright -339=>156, # oe -8240=>137, # perthousand -8222=>132, # quotedblbase -8220=>147, # quotedblleft -8221=>148, # quotedblright -8216=>145, # quoteleft -8217=>146, # quoteright -8218=>130, # quotesinglbase -353=>154, # scaron -732=>152, # tilde -8482=>153, # trademark -382=>158 # zcaron2 -); - -/** - * Array of Encoding Maps. - * @public static - */ -public static $encmap = array( - -// encoding map for: cp874 -'cp874' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'ellipsis',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'kokaithai',162=>'khokhaithai',163=>'khokhuatthai',164=>'khokhwaithai',165=>'khokhonthai',166=>'khorakhangthai',167=>'ngonguthai',168=>'chochanthai',169=>'chochingthai',170=>'chochangthai',171=>'sosothai',172=>'chochoethai',173=>'yoyingthai',174=>'dochadathai',175=>'topatakthai',176=>'thothanthai',177=>'thonangmonthothai',178=>'thophuthaothai',179=>'nonenthai',180=>'dodekthai',181=>'totaothai',182=>'thothungthai',183=>'thothahanthai',184=>'thothongthai',185=>'nonuthai',186=>'bobaimaithai',187=>'poplathai',188=>'phophungthai',189=>'fofathai',190=>'phophanthai',191=>'fofanthai',192=>'phosamphaothai',193=>'momathai',194=>'yoyakthai',195=>'roruathai',196=>'ruthai',197=>'lolingthai',198=>'luthai',199=>'wowaenthai',200=>'sosalathai',201=>'sorusithai',202=>'sosuathai',203=>'hohipthai',204=>'lochulathai',205=>'oangthai',206=>'honokhukthai',207=>'paiyannoithai',208=>'saraathai',209=>'maihanakatthai',210=>'saraaathai',211=>'saraamthai',212=>'saraithai',213=>'saraiithai',214=>'sarauethai',215=>'saraueethai',216=>'sarauthai',217=>'sarauuthai',218=>'phinthuthai',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'bahtthai',224=>'saraethai',225=>'saraaethai',226=>'saraothai',227=>'saraaimaimuanthai',228=>'saraaimaimalaithai',229=>'lakkhangyaothai',230=>'maiyamokthai',231=>'maitaikhuthai',232=>'maiekthai',233=>'maithothai',234=>'maitrithai',235=>'maichattawathai',236=>'thanthakhatthai',237=>'nikhahitthai',238=>'yamakkanthai',239=>'fongmanthai',240=>'zerothai',241=>'onethai',242=>'twothai',243=>'threethai',244=>'fourthai',245=>'fivethai',246=>'sixthai',247=>'seventhai',248=>'eightthai',249=>'ninethai',250=>'angkhankhuthai',251=>'khomutthai',252=>'.notdef',253=>'.notdef',254=>'.notdef',255=>'.notdef'), - -// encoding map for: cp1250 -'cp1250' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'.notdef',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'Sacute',141=>'Tcaron',142=>'Zcaron',143=>'Zacute',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'sacute',157=>'tcaron',158=>'zcaron',159=>'zacute',160=>'space',161=>'caron',162=>'breve',163=>'Lslash',164=>'currency',165=>'Aogonek',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'Scedilla',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'Zdotaccent',176=>'degree',177=>'plusminus',178=>'ogonek',179=>'lslash',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'aogonek',186=>'scedilla',187=>'guillemotright',188=>'Lcaron',189=>'hungarumlaut',190=>'lcaron',191=>'zdotaccent',192=>'Racute',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Lacute',198=>'Cacute',199=>'Ccedilla',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Ecaron',205=>'Iacute',206=>'Icircumflex',207=>'Dcaron',208=>'Dcroat',209=>'Nacute',210=>'Ncaron',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'multiply',216=>'Rcaron',217=>'Uring',218=>'Uacute',219=>'Uhungarumlaut',220=>'Udieresis',221=>'Yacute',222=>'Tcommaaccent',223=>'germandbls',224=>'racute',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'lacute',230=>'cacute',231=>'ccedilla',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'ecaron',237=>'iacute',238=>'icircumflex',239=>'dcaron',240=>'dcroat',241=>'nacute',242=>'ncaron',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'divide',248=>'rcaron',249=>'uring',250=>'uacute',251=>'uhungarumlaut',252=>'udieresis',253=>'yacute',254=>'tcommaaccent',255=>'dotaccent'), - -// encoding map for: cp1251 -'cp1251' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'afii10051',129=>'afii10052',130=>'quotesinglbase',131=>'afii10100',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'Euro',137=>'perthousand',138=>'afii10058',139=>'guilsinglleft',140=>'afii10059',141=>'afii10061',142=>'afii10060',143=>'afii10145',144=>'afii10099',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'afii10106',155=>'guilsinglright',156=>'afii10107',157=>'afii10109',158=>'afii10108',159=>'afii10193',160=>'space',161=>'afii10062',162=>'afii10110',163=>'afii10057',164=>'currency',165=>'afii10050',166=>'brokenbar',167=>'section',168=>'afii10023',169=>'copyright',170=>'afii10053',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'afii10056',176=>'degree',177=>'plusminus',178=>'afii10055',179=>'afii10103',180=>'afii10098',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'afii10071',185=>'afii61352',186=>'afii10101',187=>'guillemotright',188=>'afii10105',189=>'afii10054',190=>'afii10102',191=>'afii10104',192=>'afii10017',193=>'afii10018',194=>'afii10019',195=>'afii10020',196=>'afii10021',197=>'afii10022',198=>'afii10024',199=>'afii10025',200=>'afii10026',201=>'afii10027',202=>'afii10028',203=>'afii10029',204=>'afii10030',205=>'afii10031',206=>'afii10032',207=>'afii10033',208=>'afii10034',209=>'afii10035',210=>'afii10036',211=>'afii10037',212=>'afii10038',213=>'afii10039',214=>'afii10040',215=>'afii10041',216=>'afii10042',217=>'afii10043',218=>'afii10044',219=>'afii10045',220=>'afii10046',221=>'afii10047',222=>'afii10048',223=>'afii10049',224=>'afii10065',225=>'afii10066',226=>'afii10067',227=>'afii10068',228=>'afii10069',229=>'afii10070',230=>'afii10072',231=>'afii10073',232=>'afii10074',233=>'afii10075',234=>'afii10076',235=>'afii10077',236=>'afii10078',237=>'afii10079',238=>'afii10080',239=>'afii10081',240=>'afii10082',241=>'afii10083',242=>'afii10084',243=>'afii10085',244=>'afii10086',245=>'afii10087',246=>'afii10088',247=>'afii10089',248=>'afii10090',249=>'afii10091',250=>'afii10092',251=>'afii10093',252=>'afii10094',253=>'afii10095',254=>'afii10096',255=>'afii10097'), - -// encoding map for: cp1252 -'cp1252' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'Zcaron',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'zcaron',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), - -// encoding map for: cp1253 -'cp1253' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'dieresistonos',162=>'Alphatonos',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'afii00208',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'tonos',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'Epsilontonos',185=>'Etatonos',186=>'Iotatonos',187=>'guillemotright',188=>'Omicrontonos',189=>'onehalf',190=>'Upsilontonos',191=>'Omegatonos',192=>'iotadieresistonos',193=>'Alpha',194=>'Beta',195=>'Gamma',196=>'Delta',197=>'Epsilon',198=>'Zeta',199=>'Eta',200=>'Theta',201=>'Iota',202=>'Kappa',203=>'Lambda',204=>'Mu',205=>'Nu',206=>'Xi',207=>'Omicron',208=>'Pi',209=>'Rho',210=>'.notdef',211=>'Sigma',212=>'Tau',213=>'Upsilon',214=>'Phi',215=>'Chi',216=>'Psi',217=>'Omega',218=>'Iotadieresis',219=>'Upsilondieresis',220=>'alphatonos',221=>'epsilontonos',222=>'etatonos',223=>'iotatonos',224=>'upsilondieresistonos',225=>'alpha',226=>'beta',227=>'gamma',228=>'delta',229=>'epsilon',230=>'zeta',231=>'eta',232=>'theta',233=>'iota',234=>'kappa',235=>'lambda',236=>'mu',237=>'nu',238=>'xi',239=>'omicron',240=>'pi',241=>'rho',242=>'sigma1',243=>'sigma',244=>'tau',245=>'upsilon',246=>'phi',247=>'chi',248=>'psi',249=>'omega',250=>'iotadieresis',251=>'upsilondieresis',252=>'omicrontonos',253=>'upsilontonos',254=>'omegatonos',255=>'.notdef'), - -// encoding map for: cp1254 -'cp1254' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'.notdef',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Gbreve',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Idotaccent',222=>'Scedilla',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'gbreve',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'dotlessi',254=>'scedilla',255=>'ydieresis'), - -// encoding map for: cp1255 -'cp1255' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'afii57636',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'multiply',171=>'guillemotleft',172=>'logicalnot',173=>'sfthyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'middot',184=>'cedilla',185=>'onesuperior',186=>'divide',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'afii57799',193=>'afii57801',194=>'afii57800',195=>'afii57802',196=>'afii57793',197=>'afii57794',198=>'afii57795',199=>'afii57798',200=>'afii57797',201=>'afii57806',202=>'.notdef',203=>'afii57796',204=>'afii57807',205=>'afii57839',206=>'afii57645',207=>'afii57841',208=>'afii57842',209=>'afii57804',210=>'afii57803',211=>'afii57658',212=>'afii57716',213=>'afii57717',214=>'afii57718',215=>'gereshhebrew',216=>'gershayimhebrew',217=>'.notdef',218=>'.notdef',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'.notdef',224=>'afii57664',225=>'afii57665',226=>'afii57666',227=>'afii57667',228=>'afii57668',229=>'afii57669',230=>'afii57670',231=>'afii57671',232=>'afii57672',233=>'afii57673',234=>'afii57674',235=>'afii57675',236=>'afii57676',237=>'afii57677',238=>'afii57678',239=>'afii57679',240=>'afii57680',241=>'afii57681',242=>'afii57682',243=>'afii57683',244=>'afii57684',245=>'afii57685',246=>'afii57686',247=>'afii57687',248=>'afii57688',249=>'afii57689',250=>'afii57690',251=>'.notdef',252=>'.notdef',253=>'afii299',254=>'afii300',255=>'.notdef'), - -// encoding map for: cp1256 -'cp1256' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'afii57506',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'afii57511',139=>'guilsinglleft',140=>'OE',141=>'afii57507',142=>'afii57508',143=>'afii57512',144=>'afii57509',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'afii57513',155=>'guilsinglright',156=>'oe',157=>'afii61664',158=>'afii301',159=>'afii57514',160=>'space',161=>'afii57388',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'afii57403',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'afii57407',192=>'.notdef',193=>'afii57409',194=>'afii57410',195=>'afii57411',196=>'afii57412',197=>'afii57413',198=>'afii57414',199=>'afii57415',200=>'afii57416',201=>'afii57417',202=>'afii57418',203=>'afii57419',204=>'afii57420',205=>'afii57421',206=>'afii57422',207=>'afii57423',208=>'afii57424',209=>'afii57425',210=>'afii57426',211=>'afii57427',212=>'afii57428',213=>'afii57429',214=>'afii57430',215=>'multiply',216=>'afii57431',217=>'afii57432',218=>'afii57433',219=>'afii57434',220=>'afii57440',221=>'afii57441',222=>'afii57442',223=>'afii57443',224=>'agrave',225=>'afii57444',226=>'acircumflex',227=>'afii57445',228=>'afii57446',229=>'afii57470',230=>'afii57448',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'afii57449',237=>'afii57450',238=>'icircumflex',239=>'idieresis',240=>'afii57451',241=>'afii57452',242=>'afii57453',243=>'afii57454',244=>'ocircumflex',245=>'afii57455',246=>'afii57456',247=>'divide',248=>'afii57457',249=>'ugrave',250=>'afii57458',251=>'ucircumflex',252=>'udieresis',253=>'afii299',254=>'afii300',255=>'afii57519'), - -// encoding map for: cp1257 -'cp1257' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'.notdef',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'dieresis',142=>'caron',143=>'cedilla',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'macron',158=>'ogonek',159=>'.notdef',160=>'space',161=>'.notdef',162=>'cent',163=>'sterling',164=>'currency',165=>'.notdef',166=>'brokenbar',167=>'section',168=>'Oslash',169=>'copyright',170=>'Rcommaaccent',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'AE',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'oslash',185=>'onesuperior',186=>'rcommaaccent',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'ae',192=>'Aogonek',193=>'Iogonek',194=>'Amacron',195=>'Cacute',196=>'Adieresis',197=>'Aring',198=>'Eogonek',199=>'Emacron',200=>'Ccaron',201=>'Eacute',202=>'Zacute',203=>'Edotaccent',204=>'Gcommaaccent',205=>'Kcommaaccent',206=>'Imacron',207=>'Lcommaaccent',208=>'Scaron',209=>'Nacute',210=>'Ncommaaccent',211=>'Oacute',212=>'Omacron',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Uogonek',217=>'Lslash',218=>'Sacute',219=>'Umacron',220=>'Udieresis',221=>'Zdotaccent',222=>'Zcaron',223=>'germandbls',224=>'aogonek',225=>'iogonek',226=>'amacron',227=>'cacute',228=>'adieresis',229=>'aring',230=>'eogonek',231=>'emacron',232=>'ccaron',233=>'eacute',234=>'zacute',235=>'edotaccent',236=>'gcommaaccent',237=>'kcommaaccent',238=>'imacron',239=>'lcommaaccent',240=>'scaron',241=>'nacute',242=>'ncommaaccent',243=>'oacute',244=>'omacron',245=>'otilde',246=>'odieresis',247=>'divide',248=>'uogonek',249=>'lslash',250=>'sacute',251=>'umacron',252=>'udieresis',253=>'zdotaccent',254=>'zcaron',255=>'dotaccent'), - -// encoding map for: cp1258 -'cp1258' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'.notdef',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'gravecomb',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Dcroat',209=>'Ntilde',210=>'hookabovecomb',211=>'Oacute',212=>'Ocircumflex',213=>'Ohorn',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Uhorn',222=>'tildecomb',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'acutecomb',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'dcroat',241=>'ntilde',242=>'dotbelowcomb',243=>'oacute',244=>'ocircumflex',245=>'ohorn',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'uhorn',254=>'dong',255=>'ydieresis'), - -// encoding map for: iso-8859-1 -'iso-8859-1' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), - -// encoding map for: iso-8859-2 -'iso-8859-2' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'breve',163=>'Lslash',164=>'currency',165=>'Lcaron',166=>'Sacute',167=>'section',168=>'dieresis',169=>'Scaron',170=>'Scedilla',171=>'Tcaron',172=>'Zacute',173=>'hyphen',174=>'Zcaron',175=>'Zdotaccent',176=>'degree',177=>'aogonek',178=>'ogonek',179=>'lslash',180=>'acute',181=>'lcaron',182=>'sacute',183=>'caron',184=>'cedilla',185=>'scaron',186=>'scedilla',187=>'tcaron',188=>'zacute',189=>'hungarumlaut',190=>'zcaron',191=>'zdotaccent',192=>'Racute',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Lacute',198=>'Cacute',199=>'Ccedilla',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Ecaron',205=>'Iacute',206=>'Icircumflex',207=>'Dcaron',208=>'Dcroat',209=>'Nacute',210=>'Ncaron',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'multiply',216=>'Rcaron',217=>'Uring',218=>'Uacute',219=>'Uhungarumlaut',220=>'Udieresis',221=>'Yacute',222=>'Tcommaaccent',223=>'germandbls',224=>'racute',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'lacute',230=>'cacute',231=>'ccedilla',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'ecaron',237=>'iacute',238=>'icircumflex',239=>'dcaron',240=>'dcroat',241=>'nacute',242=>'ncaron',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'divide',248=>'rcaron',249=>'uring',250=>'uacute',251=>'uhungarumlaut',252=>'udieresis',253=>'yacute',254=>'tcommaaccent',255=>'dotaccent'), - -// encoding map for: iso-8859-4 -'iso-8859-4' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'kgreenlandic',163=>'Rcommaaccent',164=>'currency',165=>'Itilde',166=>'Lcommaaccent',167=>'section',168=>'dieresis',169=>'Scaron',170=>'Emacron',171=>'Gcommaaccent',172=>'Tbar',173=>'hyphen',174=>'Zcaron',175=>'macron',176=>'degree',177=>'aogonek',178=>'ogonek',179=>'rcommaaccent',180=>'acute',181=>'itilde',182=>'lcommaaccent',183=>'caron',184=>'cedilla',185=>'scaron',186=>'emacron',187=>'gcommaaccent',188=>'tbar',189=>'Eng',190=>'zcaron',191=>'eng',192=>'Amacron',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Iogonek',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Edotaccent',205=>'Iacute',206=>'Icircumflex',207=>'Imacron',208=>'Dcroat',209=>'Ncommaaccent',210=>'Omacron',211=>'Kcommaaccent',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Uogonek',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Utilde',222=>'Umacron',223=>'germandbls',224=>'amacron',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'iogonek',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'edotaccent',237=>'iacute',238=>'icircumflex',239=>'imacron',240=>'dcroat',241=>'ncommaaccent',242=>'omacron',243=>'kcommaaccent',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'uogonek',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'utilde',254=>'umacron',255=>'dotaccent'), - -// encoding map for: iso-8859-5 -'iso-8859-5' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'afii10023',162=>'afii10051',163=>'afii10052',164=>'afii10053',165=>'afii10054',166=>'afii10055',167=>'afii10056',168=>'afii10057',169=>'afii10058',170=>'afii10059',171=>'afii10060',172=>'afii10061',173=>'hyphen',174=>'afii10062',175=>'afii10145',176=>'afii10017',177=>'afii10018',178=>'afii10019',179=>'afii10020',180=>'afii10021',181=>'afii10022',182=>'afii10024',183=>'afii10025',184=>'afii10026',185=>'afii10027',186=>'afii10028',187=>'afii10029',188=>'afii10030',189=>'afii10031',190=>'afii10032',191=>'afii10033',192=>'afii10034',193=>'afii10035',194=>'afii10036',195=>'afii10037',196=>'afii10038',197=>'afii10039',198=>'afii10040',199=>'afii10041',200=>'afii10042',201=>'afii10043',202=>'afii10044',203=>'afii10045',204=>'afii10046',205=>'afii10047',206=>'afii10048',207=>'afii10049',208=>'afii10065',209=>'afii10066',210=>'afii10067',211=>'afii10068',212=>'afii10069',213=>'afii10070',214=>'afii10072',215=>'afii10073',216=>'afii10074',217=>'afii10075',218=>'afii10076',219=>'afii10077',220=>'afii10078',221=>'afii10079',222=>'afii10080',223=>'afii10081',224=>'afii10082',225=>'afii10083',226=>'afii10084',227=>'afii10085',228=>'afii10086',229=>'afii10087',230=>'afii10088',231=>'afii10089',232=>'afii10090',233=>'afii10091',234=>'afii10092',235=>'afii10093',236=>'afii10094',237=>'afii10095',238=>'afii10096',239=>'afii10097',240=>'afii61352',241=>'afii10071',242=>'afii10099',243=>'afii10100',244=>'afii10101',245=>'afii10102',246=>'afii10103',247=>'afii10104',248=>'afii10105',249=>'afii10106',250=>'afii10107',251=>'afii10108',252=>'afii10109',253=>'section',254=>'afii10110',255=>'afii10193'), - -// encoding map for: iso-8859-7 -'iso-8859-7' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'quoteleft',162=>'quoteright',163=>'sterling',164=>'.notdef',165=>'.notdef',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'.notdef',175=>'afii00208',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'tonos',181=>'dieresistonos',182=>'Alphatonos',183=>'periodcentered',184=>'Epsilontonos',185=>'Etatonos',186=>'Iotatonos',187=>'guillemotright',188=>'Omicrontonos',189=>'onehalf',190=>'Upsilontonos',191=>'Omegatonos',192=>'iotadieresistonos',193=>'Alpha',194=>'Beta',195=>'Gamma',196=>'Delta',197=>'Epsilon',198=>'Zeta',199=>'Eta',200=>'Theta',201=>'Iota',202=>'Kappa',203=>'Lambda',204=>'Mu',205=>'Nu',206=>'Xi',207=>'Omicron',208=>'Pi',209=>'Rho',210=>'.notdef',211=>'Sigma',212=>'Tau',213=>'Upsilon',214=>'Phi',215=>'Chi',216=>'Psi',217=>'Omega',218=>'Iotadieresis',219=>'Upsilondieresis',220=>'alphatonos',221=>'epsilontonos',222=>'etatonos',223=>'iotatonos',224=>'upsilondieresistonos',225=>'alpha',226=>'beta',227=>'gamma',228=>'delta',229=>'epsilon',230=>'zeta',231=>'eta',232=>'theta',233=>'iota',234=>'kappa',235=>'lambda',236=>'mu',237=>'nu',238=>'xi',239=>'omicron',240=>'pi',241=>'rho',242=>'sigma1',243=>'sigma',244=>'tau',245=>'upsilon',246=>'phi',247=>'chi',248=>'psi',249=>'omega',250=>'iotadieresis',251=>'upsilondieresis',252=>'omicrontonos',253=>'upsilontonos',254=>'omegatonos',255=>'.notdef'), - -// encoding map for: iso-8859-9 -'iso-8859-9' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Gbreve',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Idotaccent',222=>'Scedilla',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'gbreve',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'dotlessi',254=>'scedilla',255=>'ydieresis'), - -// encoding map for: iso-8859-11 -'iso-8859-11' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'kokaithai',162=>'khokhaithai',163=>'khokhuatthai',164=>'khokhwaithai',165=>'khokhonthai',166=>'khorakhangthai',167=>'ngonguthai',168=>'chochanthai',169=>'chochingthai',170=>'chochangthai',171=>'sosothai',172=>'chochoethai',173=>'yoyingthai',174=>'dochadathai',175=>'topatakthai',176=>'thothanthai',177=>'thonangmonthothai',178=>'thophuthaothai',179=>'nonenthai',180=>'dodekthai',181=>'totaothai',182=>'thothungthai',183=>'thothahanthai',184=>'thothongthai',185=>'nonuthai',186=>'bobaimaithai',187=>'poplathai',188=>'phophungthai',189=>'fofathai',190=>'phophanthai',191=>'fofanthai',192=>'phosamphaothai',193=>'momathai',194=>'yoyakthai',195=>'roruathai',196=>'ruthai',197=>'lolingthai',198=>'luthai',199=>'wowaenthai',200=>'sosalathai',201=>'sorusithai',202=>'sosuathai',203=>'hohipthai',204=>'lochulathai',205=>'oangthai',206=>'honokhukthai',207=>'paiyannoithai',208=>'saraathai',209=>'maihanakatthai',210=>'saraaathai',211=>'saraamthai',212=>'saraithai',213=>'saraiithai',214=>'sarauethai',215=>'saraueethai',216=>'sarauthai',217=>'sarauuthai',218=>'phinthuthai',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'bahtthai',224=>'saraethai',225=>'saraaethai',226=>'saraothai',227=>'saraaimaimuanthai',228=>'saraaimaimalaithai',229=>'lakkhangyaothai',230=>'maiyamokthai',231=>'maitaikhuthai',232=>'maiekthai',233=>'maithothai',234=>'maitrithai',235=>'maichattawathai',236=>'thanthakhatthai',237=>'nikhahitthai',238=>'yamakkanthai',239=>'fongmanthai',240=>'zerothai',241=>'onethai',242=>'twothai',243=>'threethai',244=>'fourthai',245=>'fivethai',246=>'sixthai',247=>'seventhai',248=>'eightthai',249=>'ninethai',250=>'angkhankhuthai',251=>'khomutthai',252=>'.notdef',253=>'.notdef',254=>'.notdef',255=>'.notdef'), - -// encoding map for: iso-8859-15 -'iso-8859-15' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'Euro',165=>'yen',166=>'Scaron',167=>'section',168=>'scaron',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'Zcaron',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'zcaron',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'OE',189=>'oe',190=>'Ydieresis',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), - -// encoding map for: iso-8859-16 -'iso-8859-16' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'aogonek',163=>'Lslash',164=>'Euro',165=>'quotedblbase',166=>'Scaron',167=>'section',168=>'scaron',169=>'copyright',170=>'Scommaaccent',171=>'guillemotleft',172=>'Zacute',173=>'hyphen',174=>'zacute',175=>'Zdotaccent',176=>'degree',177=>'plusminus',178=>'Ccaron',179=>'lslash',180=>'Zcaron',181=>'quotedblright',182=>'paragraph',183=>'periodcentered',184=>'zcaron',185=>'ccaron',186=>'scommaaccent',187=>'guillemotright',188=>'OE',189=>'oe',190=>'Ydieresis',191=>'zdotaccent',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Cacute',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Dcroat',209=>'Nacute',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'Sacute',216=>'Uhungarumlaut',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Eogonek',222=>'Tcommaaccent',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'cacute',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'dcroat',241=>'nacute',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'sacute',248=>'uhungarumlaut',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'eogonek',254=>'tcommaaccent',255=>'ydieresis'), - -// encoding map for: koi8-r -'koi8-r' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'SF100000',129=>'SF110000',130=>'SF010000',131=>'SF030000',132=>'SF020000',133=>'SF040000',134=>'SF080000',135=>'SF090000',136=>'SF060000',137=>'SF070000',138=>'SF050000',139=>'upblock',140=>'dnblock',141=>'block',142=>'lfblock',143=>'rtblock',144=>'ltshade',145=>'shade',146=>'dkshade',147=>'integraltp',148=>'filledbox',149=>'periodcentered',150=>'radical',151=>'approxequal',152=>'lessequal',153=>'greaterequal',154=>'space',155=>'integralbt',156=>'degree',157=>'twosuperior',158=>'periodcentered',159=>'divide',160=>'SF430000',161=>'SF240000',162=>'SF510000',163=>'afii10071',164=>'SF520000',165=>'SF390000',166=>'SF220000',167=>'SF210000',168=>'SF250000',169=>'SF500000',170=>'SF490000',171=>'SF380000',172=>'SF280000',173=>'SF270000',174=>'SF260000',175=>'SF360000',176=>'SF370000',177=>'SF420000',178=>'SF190000',179=>'afii10023',180=>'SF200000',181=>'SF230000',182=>'SF470000',183=>'SF480000',184=>'SF410000',185=>'SF450000',186=>'SF460000',187=>'SF400000',188=>'SF540000',189=>'SF530000',190=>'SF440000',191=>'copyright',192=>'afii10096',193=>'afii10065',194=>'afii10066',195=>'afii10088',196=>'afii10069',197=>'afii10070',198=>'afii10086',199=>'afii10068',200=>'afii10087',201=>'afii10074',202=>'afii10075',203=>'afii10076',204=>'afii10077',205=>'afii10078',206=>'afii10079',207=>'afii10080',208=>'afii10081',209=>'afii10097',210=>'afii10082',211=>'afii10083',212=>'afii10084',213=>'afii10085',214=>'afii10072',215=>'afii10067',216=>'afii10094',217=>'afii10093',218=>'afii10073',219=>'afii10090',220=>'afii10095',221=>'afii10091',222=>'afii10089',223=>'afii10092',224=>'afii10048',225=>'afii10017',226=>'afii10018',227=>'afii10040',228=>'afii10021',229=>'afii10022',230=>'afii10038',231=>'afii10020',232=>'afii10039',233=>'afii10026',234=>'afii10027',235=>'afii10028',236=>'afii10029',237=>'afii10030',238=>'afii10031',239=>'afii10032',240=>'afii10033',241=>'afii10049',242=>'afii10034',243=>'afii10035',244=>'afii10036',245=>'afii10037',246=>'afii10024',247=>'afii10019',248=>'afii10046',249=>'afii10045',250=>'afii10025',251=>'afii10042',252=>'afii10047',253=>'afii10043',254=>'afii10041',255=>'afii10044'), - -// encoding map for: koi8-u -'koi8-u' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'SF100000',129=>'SF110000',130=>'SF010000',131=>'SF030000',132=>'SF020000',133=>'SF040000',134=>'SF080000',135=>'SF090000',136=>'SF060000',137=>'SF070000',138=>'SF050000',139=>'upblock',140=>'dnblock',141=>'block',142=>'lfblock',143=>'rtblock',144=>'ltshade',145=>'shade',146=>'dkshade',147=>'integraltp',148=>'filledbox',149=>'bullet',150=>'radical',151=>'approxequal',152=>'lessequal',153=>'greaterequal',154=>'space',155=>'integralbt',156=>'degree',157=>'twosuperior',158=>'periodcentered',159=>'divide',160=>'SF430000',161=>'SF240000',162=>'SF510000',163=>'afii10071',164=>'afii10101',165=>'SF390000',166=>'afii10103',167=>'afii10104',168=>'SF250000',169=>'SF500000',170=>'SF490000',171=>'SF380000',172=>'SF280000',173=>'afii10098',174=>'SF260000',175=>'SF360000',176=>'SF370000',177=>'SF420000',178=>'SF190000',179=>'afii10023',180=>'afii10053',181=>'SF230000',182=>'afii10055',183=>'afii10056',184=>'SF410000',185=>'SF450000',186=>'SF460000',187=>'SF400000',188=>'SF540000',189=>'afii10050',190=>'SF440000',191=>'copyright',192=>'afii10096',193=>'afii10065',194=>'afii10066',195=>'afii10088',196=>'afii10069',197=>'afii10070',198=>'afii10086',199=>'afii10068',200=>'afii10087',201=>'afii10074',202=>'afii10075',203=>'afii10076',204=>'afii10077',205=>'afii10078',206=>'afii10079',207=>'afii10080',208=>'afii10081',209=>'afii10097',210=>'afii10082',211=>'afii10083',212=>'afii10084',213=>'afii10085',214=>'afii10072',215=>'afii10067',216=>'afii10094',217=>'afii10093',218=>'afii10073',219=>'afii10090',220=>'afii10095',221=>'afii10091',222=>'afii10089',223=>'afii10092',224=>'afii10048',225=>'afii10017',226=>'afii10018',227=>'afii10040',228=>'afii10021',229=>'afii10022',230=>'afii10038',231=>'afii10020',232=>'afii10039',233=>'afii10026',234=>'afii10027',235=>'afii10028',236=>'afii10029',237=>'afii10030',238=>'afii10031',239=>'afii10032',240=>'afii10033',241=>'afii10049',242=>'afii10034',243=>'afii10035',244=>'afii10036',245=>'afii10037',246=>'afii10024',247=>'afii10019',248=>'afii10046',249=>'afii10045',250=>'afii10025',251=>'afii10042',252=>'afii10047',253=>'afii10043',254=>'afii10041',255=>'afii10044'), - -// encoding map for: symbol -'symbol' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'universal',35=>'numbersign',36=>'existential',37=>'percent',38=>'ampersand',39=>'suchthat',40=>'parenleft',41=>'parenright',42=>'asteriskmath',43=>'plus',44=>'comma',45=>'minus',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'congruent',65=>'Alpha',66=>'Beta',67=>'Chi',68=>'Delta',69=>'Epsilon',70=>'Phi',71=>'Gamma',72=>'Eta',73=>'Iota',74=>'theta1',75=>'Kappa',76=>'Lambda',77=>'Mu',78=>'Nu',79=>'Omicron',80=>'Pi',81=>'Theta',82=>'Rho',83=>'Sigma',84=>'Tau',85=>'Upsilon',86=>'sigma1',87=>'Omega',88=>'Xi',89=>'Psi',90=>'Zeta',91=>'bracketleft',92=>'therefore',93=>'bracketright',94=>'perpendicular',95=>'underscore',96=>'radicalex',97=>'alpha',98=>'beta',99=>'chi',100=>'delta',101=>'epsilon',102=>'phi',103=>'gamma',104=>'eta',105=>'iota',106=>'phi1',107=>'kappa',108=>'lambda',109=>'mu',110=>'nu',111=>'omicron',112=>'pi',113=>'theta',114=>'rho',115=>'sigma',116=>'tau',117=>'upsilon',118=>'omega1',119=>'omega',120=>'xi',121=>'psi',122=>'zeta',123=>'braceleft',124=>'bar',125=>'braceright',126=>'similar',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'Euro',161=>'Upsilon1',162=>'minute',163=>'lessequal',164=>'fraction',165=>'infinity',166=>'florin',167=>'club',168=>'diamond',169=>'heart',170=>'spade',171=>'arrowboth',172=>'arrowleft',173=>'arrowup',174=>'arrowright',175=>'arrowdown',176=>'degree',177=>'plusminus',178=>'second',179=>'greaterequal',180=>'multiply',181=>'proportional',182=>'partialdiff',183=>'bullet',184=>'divide',185=>'notequal',186=>'equivalence',187=>'approxequal',188=>'ellipsis',189=>'arrowvertex',190=>'arrowhorizex',191=>'carriagereturn',192=>'aleph',193=>'Ifraktur',194=>'Rfraktur',195=>'weierstrass',196=>'circlemultiply',197=>'circleplus',198=>'emptyset',199=>'intersection',200=>'union',201=>'propersuperset',202=>'reflexsuperset',203=>'notsubset',204=>'propersubset',205=>'reflexsubset',206=>'element',207=>'notelement',208=>'angle',209=>'gradient',210=>'registerserif',211=>'copyrightserif',212=>'trademarkserif',213=>'product',214=>'radical',215=>'dotmath',216=>'logicalnot',217=>'logicaland',218=>'logicalor',219=>'arrowdblboth',220=>'arrowdblleft',221=>'arrowdblup',222=>'arrowdblright',223=>'arrowdbldown',224=>'lozenge',225=>'angleleft',226=>'registersans',227=>'copyrightsans',228=>'trademarksans',229=>'summation',230=>'parenlefttp',231=>'parenleftex',232=>'parenleftbt',233=>'bracketlefttp',234=>'bracketleftex',235=>'bracketleftbt',236=>'bracelefttp',237=>'braceleftmid',238=>'braceleftbt',239=>'braceex',240=>'.notdef',241=>'angleright',242=>'integral',243=>'integraltp',244=>'integralex',245=>'integralbt',246=>'parenrighttp',247=>'parenrightex',248=>'parenrightbt',249=>'bracketrighttp',250=>'bracketrightex',251=>'bracketrightbt',252=>'bracerighttp',253=>'bracerightmid',254=>'bracerightbt',255=>'.notdef',1226=>'registered',1227=>'copyright',1228=>'trademark') - -); // end of encoding maps - -/** - * ToUnicode map for Identity-H stream - * @public static - */ -public static $uni_identity_h = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n/WMode 0 def\n1 begincodespacerange\n<0000> \nendcodespacerange\n100 beginbfrange\n<0000> <00ff> <0000>\n<0100> <01ff> <0100>\n<0200> <02ff> <0200>\n<0300> <03ff> <0300>\n<0400> <04ff> <0400>\n<0500> <05ff> <0500>\n<0600> <06ff> <0600>\n<0700> <07ff> <0700>\n<0800> <08ff> <0800>\n<0900> <09ff> <0900>\n<0a00> <0aff> <0a00>\n<0b00> <0bff> <0b00>\n<0c00> <0cff> <0c00>\n<0d00> <0dff> <0d00>\n<0e00> <0eff> <0e00>\n<0f00> <0fff> <0f00>\n<1000> <10ff> <1000>\n<1100> <11ff> <1100>\n<1200> <12ff> <1200>\n<1300> <13ff> <1300>\n<1400> <14ff> <1400>\n<1500> <15ff> <1500>\n<1600> <16ff> <1600>\n<1700> <17ff> <1700>\n<1800> <18ff> <1800>\n<1900> <19ff> <1900>\n<1a00> <1aff> <1a00>\n<1b00> <1bff> <1b00>\n<1c00> <1cff> <1c00>\n<1d00> <1dff> <1d00>\n<1e00> <1eff> <1e00>\n<1f00> <1fff> <1f00>\n<2000> <20ff> <2000>\n<2100> <21ff> <2100>\n<2200> <22ff> <2200>\n<2300> <23ff> <2300>\n<2400> <24ff> <2400>\n<2500> <25ff> <2500>\n<2600> <26ff> <2600>\n<2700> <27ff> <2700>\n<2800> <28ff> <2800>\n<2900> <29ff> <2900>\n<2a00> <2aff> <2a00>\n<2b00> <2bff> <2b00>\n<2c00> <2cff> <2c00>\n<2d00> <2dff> <2d00>\n<2e00> <2eff> <2e00>\n<2f00> <2fff> <2f00>\n<3000> <30ff> <3000>\n<3100> <31ff> <3100>\n<3200> <32ff> <3200>\n<3300> <33ff> <3300>\n<3400> <34ff> <3400>\n<3500> <35ff> <3500>\n<3600> <36ff> <3600>\n<3700> <37ff> <3700>\n<3800> <38ff> <3800>\n<3900> <39ff> <3900>\n<3a00> <3aff> <3a00>\n<3b00> <3bff> <3b00>\n<3c00> <3cff> <3c00>\n<3d00> <3dff> <3d00>\n<3e00> <3eff> <3e00>\n<3f00> <3fff> <3f00>\n<4000> <40ff> <4000>\n<4100> <41ff> <4100>\n<4200> <42ff> <4200>\n<4300> <43ff> <4300>\n<4400> <44ff> <4400>\n<4500> <45ff> <4500>\n<4600> <46ff> <4600>\n<4700> <47ff> <4700>\n<4800> <48ff> <4800>\n<4900> <49ff> <4900>\n<4a00> <4aff> <4a00>\n<4b00> <4bff> <4b00>\n<4c00> <4cff> <4c00>\n<4d00> <4dff> <4d00>\n<4e00> <4eff> <4e00>\n<4f00> <4fff> <4f00>\n<5000> <50ff> <5000>\n<5100> <51ff> <5100>\n<5200> <52ff> <5200>\n<5300> <53ff> <5300>\n<5400> <54ff> <5400>\n<5500> <55ff> <5500>\n<5600> <56ff> <5600>\n<5700> <57ff> <5700>\n<5800> <58ff> <5800>\n<5900> <59ff> <5900>\n<5a00> <5aff> <5a00>\n<5b00> <5bff> <5b00>\n<5c00> <5cff> <5c00>\n<5d00> <5dff> <5d00>\n<5e00> <5eff> <5e00>\n<5f00> <5fff> <5f00>\n<6000> <60ff> <6000>\n<6100> <61ff> <6100>\n<6200> <62ff> <6200>\n<6300> <63ff> <6300>\nendbfrange\n100 beginbfrange\n<6400> <64ff> <6400>\n<6500> <65ff> <6500>\n<6600> <66ff> <6600>\n<6700> <67ff> <6700>\n<6800> <68ff> <6800>\n<6900> <69ff> <6900>\n<6a00> <6aff> <6a00>\n<6b00> <6bff> <6b00>\n<6c00> <6cff> <6c00>\n<6d00> <6dff> <6d00>\n<6e00> <6eff> <6e00>\n<6f00> <6fff> <6f00>\n<7000> <70ff> <7000>\n<7100> <71ff> <7100>\n<7200> <72ff> <7200>\n<7300> <73ff> <7300>\n<7400> <74ff> <7400>\n<7500> <75ff> <7500>\n<7600> <76ff> <7600>\n<7700> <77ff> <7700>\n<7800> <78ff> <7800>\n<7900> <79ff> <7900>\n<7a00> <7aff> <7a00>\n<7b00> <7bff> <7b00>\n<7c00> <7cff> <7c00>\n<7d00> <7dff> <7d00>\n<7e00> <7eff> <7e00>\n<7f00> <7fff> <7f00>\n<8000> <80ff> <8000>\n<8100> <81ff> <8100>\n<8200> <82ff> <8200>\n<8300> <83ff> <8300>\n<8400> <84ff> <8400>\n<8500> <85ff> <8500>\n<8600> <86ff> <8600>\n<8700> <87ff> <8700>\n<8800> <88ff> <8800>\n<8900> <89ff> <8900>\n<8a00> <8aff> <8a00>\n<8b00> <8bff> <8b00>\n<8c00> <8cff> <8c00>\n<8d00> <8dff> <8d00>\n<8e00> <8eff> <8e00>\n<8f00> <8fff> <8f00>\n<9000> <90ff> <9000>\n<9100> <91ff> <9100>\n<9200> <92ff> <9200>\n<9300> <93ff> <9300>\n<9400> <94ff> <9400>\n<9500> <95ff> <9500>\n<9600> <96ff> <9600>\n<9700> <97ff> <9700>\n<9800> <98ff> <9800>\n<9900> <99ff> <9900>\n<9a00> <9aff> <9a00>\n<9b00> <9bff> <9b00>\n<9c00> <9cff> <9c00>\n<9d00> <9dff> <9d00>\n<9e00> <9eff> <9e00>\n<9f00> <9fff> <9f00>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nendbfrange\n56 beginbfrange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"; - -} // END OF TCPDF_FONT_DATA CLASS - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/libraries/tcpdf/include/tcpdf_fonts.php b/libraries/tcpdf/include/tcpdf_fonts.php deleted file mode 100644 index 0a19f33014..0000000000 --- a/libraries/tcpdf/include/tcpdf_fonts.php +++ /dev/null @@ -1,2591 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description :Font methods for TCPDF library. -// -//============================================================+ - -/** - * @file - * Unicode data and font methods for TCPDF library. - * @author Nicola Asuni - * @package com.tecnick.tcpdf - */ - -/** - * @class TCPDF_FONTS - * Font methods for TCPDF library. - * @package com.tecnick.tcpdf - * @version 1.1.0 - * @author Nicola Asuni - info@tecnick.com - */ -class TCPDF_FONTS { - - /** - * Static cache used for speed up uniord performances - * @protected - */ - protected static $cache_uniord = array(); - - /** - * Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable). - * @param $fontfile (string) Font file (full path). - * @param $fonttype (string) Font type. Leave empty for autodetect mode. Valid values are: TrueTypeUnicode, TrueType, Type1, CID0JP = CID-0 Japanese, CID0KR = CID-0 Korean, CID0CS = CID-0 Chinese Simplified, CID0CT = CID-0 Chinese Traditional. - * @param $enc (string) Name of the encoding table to use. Leave empty for default mode. Omit this parameter for TrueType Unicode and symbolic fonts like Symbol or ZapfDingBats. - * @param $flags (int) Unsigned 32-bit integer containing flags specifying various characteristics of the font (PDF32000:2008 - 9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for symbol or +32 for non-symbol; +64 for italic. Fixed and Italic mode are generally autodetected so you have to set it to 32 = non-symbolic font (default) or 4 = symbolic font. - * @param $outpath (string) Output path for generated font files (must be writeable by the web server). Leave empty for default font folder. - * @param $platid (int) Platform ID for CMAP table to extract (when building a Unicode font for Windows this value should be 3, for Macintosh should be 1). - * @param $encid (int) Encoding ID for CMAP table to extract (when building a Unicode font for Windows this value should be 1, for Macintosh should be 0). When Platform ID is 3, legal values for Encoding ID are: 0=Symbol, 1=Unicode, 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4. - * @param $addcbbox (boolean) If true includes the character bounding box information on the php font file. - * @param $link (boolean) If true link to system font instead of copying the font data (not transportable) - Note: do not work with Type1 fonts. - * @return (string) TCPDF font name or boolean false in case of error. - * @author Nicola Asuni - * @since 5.9.123 (2010-09-30) - * @public static - */ - public static function addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false, $link=false) { - if (!file_exists($fontfile)) { - // Could not find file - return false; - } - // font metrics - $fmetric = array(); - // build new font name for TCPDF compatibility - $font_path_parts = pathinfo($fontfile); - if (!isset($font_path_parts['filename'])) { - $font_path_parts['filename'] = substr($font_path_parts['basename'], 0, -(strlen($font_path_parts['extension']) + 1)); - } - $font_name = strtolower($font_path_parts['filename']); - $font_name = preg_replace('/[^a-z0-9_]/', '', $font_name); - $search = array('bold', 'oblique', 'italic', 'regular'); - $replace = array('b', 'i', 'i', ''); - $font_name = str_replace($search, $replace, $font_name); - if (empty($font_name)) { - // set generic name - $font_name = 'tcpdffont'; - } - // set output path - if (empty($outpath)) { - $outpath = self::_getfontpath(); - } - // check if this font already exist - if (@file_exists($outpath.$font_name.'.php')) { - // this font already exist (delete it from fonts folder to rebuild it) - return $font_name; - } - $fmetric['file'] = $font_name; - $fmetric['ctg'] = $font_name.'.ctg.z'; - // get font data - $font = file_get_contents($fontfile); - $fmetric['originalsize'] = strlen($font); - // autodetect font type - if (empty($fonttype)) { - if (TCPDF_STATIC::_getULONG($font, 0) == 0x10000) { - // True Type (Unicode or not) - $fonttype = 'TrueTypeUnicode'; - } elseif (substr($font, 0, 4) == 'OTTO') { - // Open Type (Unicode or not) - //Unsupported font format: OpenType with CFF data - return false; - } else { - // Type 1 - $fonttype = 'Type1'; - } - } - // set font type - switch ($fonttype) { - case 'CID0CT': - case 'CID0CS': - case 'CID0KR': - case 'CID0JP': { - $fmetric['type'] = 'cidfont0'; - break; - } - case 'Type1': { - $fmetric['type'] = 'Type1'; - if (empty($enc) AND (($flags & 4) == 0)) { - $enc = 'cp1252'; - } - break; - } - case 'TrueType': { - $fmetric['type'] = 'TrueType'; - break; - } - case 'TrueTypeUnicode': - default: { - $fmetric['type'] = 'TrueTypeUnicode'; - break; - } - } - // set encoding maps (if any) - $fmetric['enc'] = preg_replace('/[^A-Za-z0-9_\-]/', '', $enc); - $fmetric['diff'] = ''; - if (($fmetric['type'] == 'TrueType') OR ($fmetric['type'] == 'Type1')) { - if (!empty($enc) AND ($enc != 'cp1252') AND isset(TCPDF_FONT_DATA::$encmap[$enc])) { - // build differences from reference encoding - $enc_ref = TCPDF_FONT_DATA::$encmap['cp1252']; - $enc_target = TCPDF_FONT_DATA::$encmap[$enc]; - $last = 0; - for ($i = 32; $i <= 255; ++$i) { - if ($enc_target != $enc_ref[$i]) { - if ($i != ($last + 1)) { - $fmetric['diff'] .= $i.' '; - } - $last = $i; - $fmetric['diff'] .= '/'.$enc_target[$i].' '; - } - } - } - } - // parse the font by type - if ($fmetric['type'] == 'Type1') { - // ---------- TYPE 1 ---------- - // read first segment - $a = unpack('Cmarker/Ctype/Vsize', substr($font, 0, 6)); - if ($a['marker'] != 128) { - // Font file is not a valid binary Type1 - return false; - } - $fmetric['size1'] = $a['size']; - $data = substr($font, 6, $fmetric['size1']); - // read second segment - $a = unpack('Cmarker/Ctype/Vsize', substr($font, (6 + $fmetric['size1']), 6)); - if ($a['marker'] != 128) { - // Font file is not a valid binary Type1 - return false; - } - $fmetric['size2'] = $a['size']; - $encrypted = substr($font, (12 + $fmetric['size1']), $fmetric['size2']); - $data .= $encrypted; - // store compressed font - $fmetric['file'] .= '.z'; - $fp = TCPDF_STATIC::fopenLocal($outpath.$fmetric['file'], 'wb'); - fwrite($fp, gzcompress($data)); - fclose($fp); - // get font info - $fmetric['Flags'] = $flags; - preg_match ('#/FullName[\s]*\(([^\)]*)#', $font, $matches); - $fmetric['name'] = preg_replace('/[^a-zA-Z0-9_\-]/', '', $matches[1]); - preg_match('#/FontBBox[\s]*{([^}]*)#', $font, $matches); - $fmetric['bbox'] = trim($matches[1]); - $bv = explode(' ', $fmetric['bbox']); - $fmetric['Ascent'] = intval($bv[3]); - $fmetric['Descent'] = intval($bv[1]); - preg_match('#/ItalicAngle[\s]*([0-9\+\-]*)#', $font, $matches); - $fmetric['italicAngle'] = intval($matches[1]); - if ($fmetric['italicAngle'] != 0) { - $fmetric['Flags'] |= 64; - } - preg_match('#/UnderlinePosition[\s]*([0-9\+\-]*)#', $font, $matches); - $fmetric['underlinePosition'] = intval($matches[1]); - preg_match('#/UnderlineThickness[\s]*([0-9\+\-]*)#', $font, $matches); - $fmetric['underlineThickness'] = intval($matches[1]); - preg_match('#/isFixedPitch[\s]*([^\s]*)#', $font, $matches); - if ($matches[1] == 'true') { - $fmetric['Flags'] |= 1; - } - // get internal map - $imap = array(); - if (preg_match_all('#dup[\s]([0-9]+)[\s]*/([^\s]*)[\s]put#sU', $font, $fmap, PREG_SET_ORDER) > 0) { - foreach ($fmap as $v) { - $imap[$v[2]] = $v[1]; - } - } - // decrypt eexec encrypted part - $r = 55665; // eexec encryption constant - $c1 = 52845; - $c2 = 22719; - $elen = strlen($encrypted); - $eplain = ''; - for ($i = 0; $i < $elen; ++$i) { - $chr = ord($encrypted[$i]); - $eplain .= chr($chr ^ ($r >> 8)); - $r = ((($chr + $r) * $c1 + $c2) % 65536); - } - if (preg_match('#/ForceBold[\s]*([^\s]*)#', $eplain, $matches) > 0) { - if ($matches[1] == 'true') { - $fmetric['Flags'] |= 0x40000; - } - } - if (preg_match('#/StdVW[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { - $fmetric['StemV'] = intval($matches[1]); - } else { - $fmetric['StemV'] = 70; - } - if (preg_match('#/StdHW[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { - $fmetric['StemH'] = intval($matches[1]); - } else { - $fmetric['StemH'] = 30; - } - if (preg_match('#/BlueValues[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { - $bv = explode(' ', $matches[1]); - if (count($bv) >= 6) { - $v1 = intval($bv[2]); - $v2 = intval($bv[4]); - if ($v1 <= $v2) { - $fmetric['XHeight'] = $v1; - $fmetric['CapHeight'] = $v2; - } else { - $fmetric['XHeight'] = $v2; - $fmetric['CapHeight'] = $v1; - } - } else { - $fmetric['XHeight'] = 450; - $fmetric['CapHeight'] = 700; - } - } else { - $fmetric['XHeight'] = 450; - $fmetric['CapHeight'] = 700; - } - // get the number of random bytes at the beginning of charstrings - if (preg_match('#/lenIV[\s]*([0-9]*)#', $eplain, $matches) > 0) { - $lenIV = intval($matches[1]); - } else { - $lenIV = 4; - } - $fmetric['Leading'] = 0; - // get charstring data - $eplain = substr($eplain, (strpos($eplain, '/CharStrings') + 1)); - preg_match_all('#/([A-Za-z0-9\.]*)[\s][0-9]+[\s]RD[\s](.*)[\s]ND#sU', $eplain, $matches, PREG_SET_ORDER); - if (!empty($enc) AND isset(TCPDF_FONT_DATA::$encmap[$enc])) { - $enc_map = TCPDF_FONT_DATA::$encmap[$enc]; - } else { - $enc_map = false; - } - $fmetric['cw'] = ''; - $fmetric['MaxWidth'] = 0; - $cwidths = array(); - foreach ($matches as $k => $v) { - $cid = 0; - if (isset($imap[$v[1]])) { - $cid = $imap[$v[1]]; - } elseif ($enc_map !== false) { - $cid = array_search($v[1], $enc_map); - if ($cid === false) { - $cid = 0; - } elseif ($cid > 1000) { - $cid -= 1000; - } - } - // decrypt charstring encrypted part - $r = 4330; // charstring encryption constant - $c1 = 52845; - $c2 = 22719; - $cd = $v[2]; - $clen = strlen($cd); - $ccom = array(); - for ($i = 0; $i < $clen; ++$i) { - $chr = ord($cd[$i]); - $ccom[] = ($chr ^ ($r >> 8)); - $r = ((($chr + $r) * $c1 + $c2) % 65536); - } - // decode numbers - $cdec = array(); - $ck = 0; - $i = $lenIV; - while ($i < $clen) { - if ($ccom[$i] < 32) { - $cdec[$ck] = $ccom[$i]; - if (($ck > 0) AND ($cdec[$ck] == 13)) { - // hsbw command: update width - $cwidths[$cid] = $cdec[($ck - 1)]; - } - ++$i; - } elseif (($ccom[$i] >= 32) AND ($ccom[$i] <= 246)) { - $cdec[$ck] = ($ccom[$i] - 139); - ++$i; - } elseif (($ccom[$i] >= 247) AND ($ccom[$i] <= 250)) { - $cdec[$ck] = ((($ccom[$i] - 247) * 256) + $ccom[($i + 1)] + 108); - $i += 2; - } elseif (($ccom[$i] >= 251) AND ($ccom[$i] <= 254)) { - $cdec[$ck] = ((-($ccom[$i] - 251) * 256) - $ccom[($i + 1)] - 108); - $i += 2; - } elseif ($ccom[$i] == 255) { - $sval = chr($ccom[($i + 1)]).chr($ccom[($i + 2)]).chr($ccom[($i + 3)]).chr($ccom[($i + 4)]); - $vsval = unpack('li', $sval); - $cdec[$ck] = $vsval['i']; - $i += 5; - } - ++$ck; - } - } // end for each matches - $fmetric['MissingWidth'] = $cwidths[0]; - $fmetric['MaxWidth'] = $fmetric['MissingWidth']; - $fmetric['AvgWidth'] = 0; - // set chars widths - for ($cid = 0; $cid <= 255; ++$cid) { - if (isset($cwidths[$cid])) { - if ($cwidths[$cid] > $fmetric['MaxWidth']) { - $fmetric['MaxWidth'] = $cwidths[$cid]; - } - $fmetric['AvgWidth'] += $cwidths[$cid]; - $fmetric['cw'] .= ','.$cid.'=>'.$cwidths[$cid]; - } else { - $fmetric['cw'] .= ','.$cid.'=>'.$fmetric['MissingWidth']; - } - } - $fmetric['AvgWidth'] = round($fmetric['AvgWidth'] / count($cwidths)); - } else { - // ---------- TRUE TYPE ---------- - $offset = 0; // offset position of the font data - if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) { - // sfnt version must be 0x00010000 for TrueType version 1.0. - return false; - } - if ($fmetric['type'] != 'cidfont0') { - if ($link) { - // creates a symbolic link to the existing font - symlink($fontfile, $outpath.$fmetric['file']); - } else { - // store compressed font - $fmetric['file'] .= '.z'; - $fp = TCPDF_STATIC::fopenLocal($outpath.$fmetric['file'], 'wb'); - fwrite($fp, gzcompress($font)); - fclose($fp); - } - } - $offset += 4; - // get number of tables - $numTables = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - // skip searchRange, entrySelector and rangeShift - $offset += 6; - // tables array - $table = array(); - // ---------- get tables ---------- - for ($i = 0; $i < $numTables; ++$i) { - // get table info - $tag = substr($font, $offset, 4); - $offset += 4; - $table[$tag] = array(); - $table[$tag]['checkSum'] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $table[$tag]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $table[$tag]['length'] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - } - // check magicNumber - $offset = $table['head']['offset'] + 12; - if (TCPDF_STATIC::_getULONG($font, $offset) != 0x5F0F3CF5) { - // magicNumber must be 0x5F0F3CF5 - return false; - } - $offset += 4; - $offset += 2; // skip flags - // get FUnits - $fmetric['unitsPerEm'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - // units ratio constant - $urk = (1000 / $fmetric['unitsPerEm']); - $offset += 16; // skip created, modified - $xMin = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - $yMin = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - $xMax = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - $yMax = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - $fmetric['bbox'] = ''.$xMin.' '.$yMin.' '.$xMax.' '.$yMax.''; - $macStyle = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - // PDF font flags - $fmetric['Flags'] = $flags; - if (($macStyle & 2) == 2) { - // italic flag - $fmetric['Flags'] |= 64; - } - // get offset mode (indexToLocFormat : 0 = short, 1 = long) - $offset = $table['head']['offset'] + 50; - $short_offset = (TCPDF_STATIC::_getSHORT($font, $offset) == 0); - $offset += 2; - // get the offsets to the locations of the glyphs in the font, relative to the beginning of the glyphData table - $indexToLoc = array(); - $offset = $table['loca']['offset']; - if ($short_offset) { - // short version - $tot_num_glyphs = floor($table['loca']['length'] / 2); // numGlyphs + 1 - for ($i = 0; $i < $tot_num_glyphs; ++$i) { - $indexToLoc[$i] = TCPDF_STATIC::_getUSHORT($font, $offset) * 2; - if (isset($indexToLoc[($i - 1)]) && ($indexToLoc[$i] == $indexToLoc[($i - 1)])) { - // the last glyph didn't have an outline - unset($indexToLoc[($i - 1)]); - } - $offset += 2; - } - } else { - // long version - $tot_num_glyphs = floor($table['loca']['length'] / 4); // numGlyphs + 1 - for ($i = 0; $i < $tot_num_glyphs; ++$i) { - $indexToLoc[$i] = TCPDF_STATIC::_getULONG($font, $offset); - if (isset($indexToLoc[($i - 1)]) && ($indexToLoc[$i] == $indexToLoc[($i - 1)])) { - // the last glyph didn't have an outline - unset($indexToLoc[($i - 1)]); - } - $offset += 4; - } - } - // get glyphs indexes of chars from cmap table - $offset = $table['cmap']['offset'] + 2; - $numEncodingTables = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $encodingTables = array(); - for ($i = 0; $i < $numEncodingTables; ++$i) { - $encodingTables[$i]['platformID'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $encodingTables[$i]['encodingID'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $encodingTables[$i]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - } - // ---------- get os/2 metrics ---------- - $offset = $table['OS/2']['offset']; - $offset += 2; // skip version - // xAvgCharWidth - $fmetric['AvgWidth'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - // usWeightClass - $usWeightClass = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); - // estimate StemV and StemH (400 = usWeightClass for Normal - Regular font) - $fmetric['StemV'] = round((70 * $usWeightClass) / 400); - $fmetric['StemH'] = round((30 * $usWeightClass) / 400); - $offset += 2; - $offset += 2; // usWidthClass - $fsType = TCPDF_STATIC::_getSHORT($font, $offset); - $offset += 2; - if ($fsType == 2) { - // This Font cannot be modified, embedded or exchanged in any manner without first obtaining permission of the legal owner. - return false; - } - // ---------- get font name ---------- - $fmetric['name'] = ''; - $offset = $table['name']['offset']; - $offset += 2; // skip Format selector (=0). - // Number of NameRecords that follow n. - $numNameRecords = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - // Offset to start of string storage (from start of table). - $stringStorageOffset = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - for ($i = 0; $i < $numNameRecords; ++$i) { - $offset += 6; // skip Platform ID, Platform-specific encoding ID, Language ID. - // Name ID. - $nameID = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - if ($nameID == 6) { - // String length (in bytes). - $stringLength = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - // String offset from start of storage area (in bytes). - $stringOffset = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $offset = ($table['name']['offset'] + $stringStorageOffset + $stringOffset); - $fmetric['name'] = substr($font, $offset, $stringLength); - $fmetric['name'] = preg_replace('/[^a-zA-Z0-9_\-]/', '', $fmetric['name']); - break; - } else { - $offset += 4; // skip String length, String offset - } - } - if (empty($fmetric['name'])) { - $fmetric['name'] = $font_name; - } - // ---------- get post data ---------- - $offset = $table['post']['offset']; - $offset += 4; // skip Format Type - $fmetric['italicAngle'] = TCPDF_STATIC::_getFIXED($font, $offset); - $offset += 4; - $fmetric['underlinePosition'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - $fmetric['underlineThickness'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - $isFixedPitch = (TCPDF_STATIC::_getULONG($font, $offset) == 0) ? false : true; - $offset += 2; - if ($isFixedPitch) { - $fmetric['Flags'] |= 1; - } - // ---------- get hhea data ---------- - $offset = $table['hhea']['offset']; - $offset += 4; // skip Table version number - // Ascender - $fmetric['Ascent'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - // Descender - $fmetric['Descent'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - // LineGap - $fmetric['Leading'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); - $offset += 2; - // advanceWidthMax - $fmetric['MaxWidth'] = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); - $offset += 2; - $offset += 22; // skip some values - // get the number of hMetric entries in hmtx table - $numberOfHMetrics = TCPDF_STATIC::_getUSHORT($font, $offset); - // ---------- get maxp data ---------- - $offset = $table['maxp']['offset']; - $offset += 4; // skip Table version number - // get the the number of glyphs in the font. - $numGlyphs = TCPDF_STATIC::_getUSHORT($font, $offset); - // ---------- get CIDToGIDMap ---------- - $ctg = array(); - foreach ($encodingTables as $enctable) { - // get only specified Platform ID and Encoding ID - if (($enctable['platformID'] == $platid) AND ($enctable['encodingID'] == $encid)) { - $offset = $table['cmap']['offset'] + $enctable['offset']; - $format = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - switch ($format) { - case 0: { // Format 0: Byte encoding table - $offset += 4; // skip length and version/language - for ($c = 0; $c < 256; ++$c) { - $g = TCPDF_STATIC::_getBYTE($font, $offset); - $ctg[$c] = $g; - ++$offset; - } - break; - } - case 2: { // Format 2: High-byte mapping through table - $offset += 4; // skip length and version/language - $numSubHeaders = 0; - for ($i = 0; $i < 256; ++$i) { - // Array that maps high bytes to subHeaders: value is subHeader index * 8. - $subHeaderKeys[$i] = (TCPDF_STATIC::_getUSHORT($font, $offset) / 8); - $offset += 2; - if ($numSubHeaders < $subHeaderKeys[$i]) { - $numSubHeaders = $subHeaderKeys[$i]; - } - } - // the number of subHeaders is equal to the max of subHeaderKeys + 1 - ++$numSubHeaders; - // read subHeader structures - $subHeaders = array(); - $numGlyphIndexArray = 0; - for ($k = 0; $k < $numSubHeaders; ++$k) { - $subHeaders[$k]['firstCode'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $subHeaders[$k]['entryCount'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $subHeaders[$k]['idDelta'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $subHeaders[$k]['idRangeOffset'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $subHeaders[$k]['idRangeOffset'] -= (2 + (($numSubHeaders - $k - 1) * 8)); - $subHeaders[$k]['idRangeOffset'] /= 2; - $numGlyphIndexArray += $subHeaders[$k]['entryCount']; - } - for ($k = 0; $k < $numGlyphIndexArray; ++$k) { - $glyphIndexArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - for ($i = 0; $i < 256; ++$i) { - $k = $subHeaderKeys[$i]; - if ($k == 0) { - // one byte code - $c = $i; - $g = $glyphIndexArray[0]; - $ctg[$c] = $g; - } else { - // two bytes code - $start_byte = $subHeaders[$k]['firstCode']; - $end_byte = $start_byte + $subHeaders[$k]['entryCount']; - for ($j = $start_byte; $j < $end_byte; ++$j) { - // combine high and low bytes - $c = (($i << 8) + $j); - $idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']); - $g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536; - if ($g < 0) { - $g = 0; - } - $ctg[$c] = $g; - } - } - } - break; - } - case 4: { // Format 4: Segment mapping to delta values - $length = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $offset += 2; // skip version/language - $segCount = floor(TCPDF_STATIC::_getUSHORT($font, $offset) / 2); - $offset += 2; - $offset += 6; // skip searchRange, entrySelector, rangeShift - $endCount = array(); // array of end character codes for each segment - for ($k = 0; $k < $segCount; ++$k) { - $endCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - $offset += 2; // skip reservedPad - $startCount = array(); // array of start character codes for each segment - for ($k = 0; $k < $segCount; ++$k) { - $startCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - $idDelta = array(); // delta for all character codes in segment - for ($k = 0; $k < $segCount; ++$k) { - $idDelta[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - $idRangeOffset = array(); // Offsets into glyphIdArray or 0 - for ($k = 0; $k < $segCount; ++$k) { - $idRangeOffset[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - $gidlen = (floor($length / 2) - 8 - (4 * $segCount)); - $glyphIdArray = array(); // glyph index array - for ($k = 0; $k < $gidlen; ++$k) { - $glyphIdArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - for ($k = 0; $k < $segCount; ++$k) { - for ($c = $startCount[$k]; $c <= $endCount[$k]; ++$c) { - if ($idRangeOffset[$k] == 0) { - $g = ($idDelta[$k] + $c) % 65536; - } else { - $gid = (floor($idRangeOffset[$k] / 2) + ($c - $startCount[$k]) - ($segCount - $k)); - $g = ($glyphIdArray[$gid] + $idDelta[$k]) % 65536; - } - if ($g < 0) { - $g = 0; - } - $ctg[$c] = $g; - } - } - break; - } - case 6: { // Format 6: Trimmed table mapping - $offset += 4; // skip length and version/language - $firstCode = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $entryCount = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - for ($k = 0; $k < $entryCount; ++$k) { - $c = ($k + $firstCode); - $g = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $ctg[$c] = $g; - } - break; - } - case 8: { // Format 8: Mixed 16-bit and 32-bit coverage - $offset += 10; // skip reserved, length and version/language - for ($k = 0; $k < 8192; ++$k) { - $is32[$k] = TCPDF_STATIC::_getBYTE($font, $offset); - ++$offset; - } - $nGroups = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($i = 0; $i < $nGroups; ++$i) { - $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $startGlyphID = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($k = $startCharCode; $k <= $endCharCode; ++$k) { - $is32idx = floor($c / 8); - if ((isset($is32[$is32idx])) AND (($is32[$is32idx] & (1 << (7 - ($c % 8)))) == 0)) { - $c = $k; - } else { - // 32 bit format - // convert to decimal (http://www.unicode.org/faq//utf_bom.html#utf16-4) - //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232 - //SURROGATE_OFFSET = (0x10000 - (0xD800 << 10) - 0xDC00) = -56613888 - $c = ((55232 + ($k >> 10)) << 10) + (0xDC00 + ($k & 0x3FF)) -56613888; - } - $ctg[$c] = 0; - ++$startGlyphID; - } - } - break; - } - case 10: { // Format 10: Trimmed array - $offset += 10; // skip reserved, length and version/language - $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $numChars = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($k = 0; $k < $numChars; ++$k) { - $c = ($k + $startCharCode); - $g = TCPDF_STATIC::_getUSHORT($font, $offset); - $ctg[$c] = $g; - $offset += 2; - } - break; - } - case 12: { // Format 12: Segmented coverage - $offset += 10; // skip length and version/language - $nGroups = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($k = 0; $k < $nGroups; ++$k) { - $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $startGlyphCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($c = $startCharCode; $c <= $endCharCode; ++$c) { - $ctg[$c] = $startGlyphCode; - ++$startGlyphCode; - } - } - break; - } - case 13: { // Format 13: Many-to-one range mappings - // to be implemented ... - break; - } - case 14: { // Format 14: Unicode Variation Sequences - // to be implemented ... - break; - } - } - } - } - if (!isset($ctg[0])) { - $ctg[0] = 0; - } - // get xHeight (height of x) - $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[120]] + 4); - $yMin = TCPDF_STATIC::_getFWORD($font, $offset); - $offset += 4; - $yMax = TCPDF_STATIC::_getFWORD($font, $offset); - $offset += 2; - $fmetric['XHeight'] = round(($yMax - $yMin) * $urk); - // get CapHeight (height of H) - $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[72]] + 4); - $yMin = TCPDF_STATIC::_getFWORD($font, $offset); - $offset += 4; - $yMax = TCPDF_STATIC::_getFWORD($font, $offset); - $offset += 2; - $fmetric['CapHeight'] = round(($yMax - $yMin) * $urk); - // ceate widths array - $cw = array(); - $offset = $table['hmtx']['offset']; - for ($i = 0 ; $i < $numberOfHMetrics; ++$i) { - $cw[$i] = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); - $offset += 4; // skip lsb - } - if ($numberOfHMetrics < $numGlyphs) { - // fill missing widths with the last value - $cw = array_pad($cw, $numGlyphs, $cw[($numberOfHMetrics - 1)]); - } - $fmetric['MissingWidth'] = $cw[0]; - $fmetric['cw'] = ''; - $fmetric['cbbox'] = ''; - for ($cid = 0; $cid <= 65535; ++$cid) { - if (isset($ctg[$cid])) { - if (isset($cw[$ctg[$cid]])) { - $fmetric['cw'] .= ','.$cid.'=>'.$cw[$ctg[$cid]]; - } - if ($addcbbox AND isset($indexToLoc[$ctg[$cid]])) { - $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[$cid]]); - $xMin = round(TCPDF_STATIC::_getFWORD($font, $offset + 2) * $urk); - $yMin = round(TCPDF_STATIC::_getFWORD($font, $offset + 4) * $urk); - $xMax = round(TCPDF_STATIC::_getFWORD($font, $offset + 6) * $urk); - $yMax = round(TCPDF_STATIC::_getFWORD($font, $offset + 8) * $urk); - $fmetric['cbbox'] .= ','.$cid.'=>array('.$xMin.','.$yMin.','.$xMax.','.$yMax.')'; - } - } - } - } // end of true type - if (($fmetric['type'] == 'TrueTypeUnicode') AND (count($ctg) == 256)) { - $fmetric['type'] = 'TrueType'; - } - // ---------- create php font file ---------- - $pfile = '<'.'?'.'php'."\n"; - $pfile .= '// TCPDF FONT FILE DESCRIPTION'."\n"; - $pfile .= '$type=\''.$fmetric['type'].'\';'."\n"; - $pfile .= '$name=\''.$fmetric['name'].'\';'."\n"; - $pfile .= '$up='.$fmetric['underlinePosition'].';'."\n"; - $pfile .= '$ut='.$fmetric['underlineThickness'].';'."\n"; - if ($fmetric['MissingWidth'] > 0) { - $pfile .= '$dw='.$fmetric['MissingWidth'].';'."\n"; - } else { - $pfile .= '$dw='.$fmetric['AvgWidth'].';'."\n"; - } - $pfile .= '$diff=\''.$fmetric['diff'].'\';'."\n"; - if ($fmetric['type'] == 'Type1') { - // Type 1 - $pfile .= '$enc=\''.$fmetric['enc'].'\';'."\n"; - $pfile .= '$file=\''.$fmetric['file'].'\';'."\n"; - $pfile .= '$size1='.$fmetric['size1'].';'."\n"; - $pfile .= '$size2='.$fmetric['size2'].';'."\n"; - } else { - $pfile .= '$originalsize='.$fmetric['originalsize'].';'."\n"; - if ($fmetric['type'] == 'cidfont0') { - // CID-0 - switch ($fonttype) { - case 'CID0JP': { - $pfile .= '// Japanese'."\n"; - $pfile .= '$enc=\'UniJIS-UTF16-H\';'."\n"; - $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Japan1\',\'Supplement\'=>5);'."\n"; - $pfile .= 'include(dirname(__FILE__).\'/uni2cid_aj16.php\');'."\n"; - break; - } - case 'CID0KR': { - $pfile .= '// Korean'."\n"; - $pfile .= '$enc=\'UniKS-UTF16-H\';'."\n"; - $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Korea1\',\'Supplement\'=>0);'."\n"; - $pfile .= 'include(dirname(__FILE__).\'/uni2cid_ak12.php\');'."\n"; - break; - } - case 'CID0CS': { - $pfile .= '// Chinese Simplified'."\n"; - $pfile .= '$enc=\'UniGB-UTF16-H\';'."\n"; - $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'GB1\',\'Supplement\'=>2);'."\n"; - $pfile .= 'include(dirname(__FILE__).\'/uni2cid_ag15.php\');'."\n"; - break; - } - case 'CID0CT': - default: { - $pfile .= '// Chinese Traditional'."\n"; - $pfile .= '$enc=\'UniCNS-UTF16-H\';'."\n"; - $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'CNS1\',\'Supplement\'=>0);'."\n"; - $pfile .= 'include(dirname(__FILE__).\'/uni2cid_aj16.php\');'."\n"; - break; - } - } - } else { - // TrueType - $pfile .= '$enc=\''.$fmetric['enc'].'\';'."\n"; - $pfile .= '$file=\''.$fmetric['file'].'\';'."\n"; - $pfile .= '$ctg=\''.$fmetric['ctg'].'\';'."\n"; - // create CIDToGIDMap - $cidtogidmap = str_pad('', 131072, "\x00"); // (256 * 256 * 2) = 131072 - foreach ($ctg as $cid => $gid) { - $cidtogidmap = self::updateCIDtoGIDmap($cidtogidmap, $cid, $ctg[$cid]); - } - // store compressed CIDToGIDMap - $fp = TCPDF_STATIC::fopenLocal($outpath.$fmetric['ctg'], 'wb'); - fwrite($fp, gzcompress($cidtogidmap)); - fclose($fp); - } - } - $pfile .= '$desc=array('; - $pfile .= '\'Flags\'=>'.$fmetric['Flags'].','; - $pfile .= '\'FontBBox\'=>\'['.$fmetric['bbox'].']\','; - $pfile .= '\'ItalicAngle\'=>'.$fmetric['italicAngle'].','; - $pfile .= '\'Ascent\'=>'.$fmetric['Ascent'].','; - $pfile .= '\'Descent\'=>'.$fmetric['Descent'].','; - $pfile .= '\'Leading\'=>'.$fmetric['Leading'].','; - $pfile .= '\'CapHeight\'=>'.$fmetric['CapHeight'].','; - $pfile .= '\'XHeight\'=>'.$fmetric['XHeight'].','; - $pfile .= '\'StemV\'=>'.$fmetric['StemV'].','; - $pfile .= '\'StemH\'=>'.$fmetric['StemH'].','; - $pfile .= '\'AvgWidth\'=>'.$fmetric['AvgWidth'].','; - $pfile .= '\'MaxWidth\'=>'.$fmetric['MaxWidth'].','; - $pfile .= '\'MissingWidth\'=>'.$fmetric['MissingWidth'].''; - $pfile .= ');'."\n"; - if (!empty($fmetric['cbbox'])) { - $pfile .= '$cbbox=array('.substr($fmetric['cbbox'], 1).');'."\n"; - } - $pfile .= '$cw=array('.substr($fmetric['cw'], 1).');'."\n"; - $pfile .= '// --- EOF ---'."\n"; - // store file - $fp = TCPDF_STATIC::fopenLocal($outpath.$font_name.'.php', 'w'); - fwrite($fp, $pfile); - fclose($fp); - // return TCPDF font name - return $font_name; - } - - /** - * Returs the checksum of a TTF table. - * @param $table (string) table to check - * @param $length (int) length of table in bytes - * @return int checksum - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getTTFtableChecksum($table, $length) { - $sum = 0; - $tlen = ($length / 4); - $offset = 0; - for ($i = 0; $i < $tlen; ++$i) { - $v = unpack('Ni', substr($table, $offset, 4)); - $sum += $v['i']; - $offset += 4; - } - $sum = unpack('Ni', pack('N', $sum)); - return $sum['i']; - } - - /** - * Returns a subset of the TrueType font data without the unused glyphs. - * @param $font (string) TrueType font data. - * @param $subsetchars (array) Array of used characters (the glyphs to keep). - * @return (string) A subset of TrueType font data without the unused glyphs. - * @author Nicola Asuni - * @since 5.2.000 (2010-06-02) - * @public static - */ - public static function _getTrueTypeFontSubset($font, $subsetchars) { - ksort($subsetchars); - $offset = 0; // offset position of the font data - if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) { - // sfnt version must be 0x00010000 for TrueType version 1.0. - return $font; - } - $offset += 4; - // get number of tables - $numTables = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - // skip searchRange, entrySelector and rangeShift - $offset += 6; - // tables array - $table = array(); - // for each table - for ($i = 0; $i < $numTables; ++$i) { - // get table info - $tag = substr($font, $offset, 4); - $offset += 4; - $table[$tag] = array(); - $table[$tag]['checkSum'] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $table[$tag]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $table[$tag]['length'] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - } - // check magicNumber - $offset = $table['head']['offset'] + 12; - if (TCPDF_STATIC::_getULONG($font, $offset) != 0x5F0F3CF5) { - // magicNumber must be 0x5F0F3CF5 - return $font; - } - $offset += 4; - // get offset mode (indexToLocFormat : 0 = short, 1 = long) - $offset = $table['head']['offset'] + 50; - $short_offset = (TCPDF_STATIC::_getSHORT($font, $offset) == 0); - $offset += 2; - // get the offsets to the locations of the glyphs in the font, relative to the beginning of the glyphData table - $indexToLoc = array(); - $offset = $table['loca']['offset']; - if ($short_offset) { - // short version - $tot_num_glyphs = floor($table['loca']['length'] / 2); // numGlyphs + 1 - for ($i = 0; $i < $tot_num_glyphs; ++$i) { - $indexToLoc[$i] = TCPDF_STATIC::_getUSHORT($font, $offset) * 2; - $offset += 2; - } - } else { - // long version - $tot_num_glyphs = ($table['loca']['length'] / 4); // numGlyphs + 1 - for ($i = 0; $i < $tot_num_glyphs; ++$i) { - $indexToLoc[$i] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - } - } - // get glyphs indexes of chars from cmap table - $subsetglyphs = array(); // glyph IDs on key - $subsetglyphs[0] = true; // character codes that do not correspond to any glyph in the font should be mapped to glyph index 0 - $offset = $table['cmap']['offset'] + 2; - $numEncodingTables = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $encodingTables = array(); - for ($i = 0; $i < $numEncodingTables; ++$i) { - $encodingTables[$i]['platformID'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $encodingTables[$i]['encodingID'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $encodingTables[$i]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - } - foreach ($encodingTables as $enctable) { - // get all platforms and encodings - $offset = $table['cmap']['offset'] + $enctable['offset']; - $format = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - switch ($format) { - case 0: { // Format 0: Byte encoding table - $offset += 4; // skip length and version/language - for ($c = 0; $c < 256; ++$c) { - if (isset($subsetchars[$c])) { - $g = TCPDF_STATIC::_getBYTE($font, $offset); - $subsetglyphs[$g] = true; - } - ++$offset; - } - break; - } - case 2: { // Format 2: High-byte mapping through table - $offset += 4; // skip length and version/language - $numSubHeaders = 0; - for ($i = 0; $i < 256; ++$i) { - // Array that maps high bytes to subHeaders: value is subHeader index * 8. - $subHeaderKeys[$i] = (TCPDF_STATIC::_getUSHORT($font, $offset) / 8); - $offset += 2; - if ($numSubHeaders < $subHeaderKeys[$i]) { - $numSubHeaders = $subHeaderKeys[$i]; - } - } - // the number of subHeaders is equal to the max of subHeaderKeys + 1 - ++$numSubHeaders; - // read subHeader structures - $subHeaders = array(); - $numGlyphIndexArray = 0; - for ($k = 0; $k < $numSubHeaders; ++$k) { - $subHeaders[$k]['firstCode'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $subHeaders[$k]['entryCount'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $subHeaders[$k]['idDelta'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $subHeaders[$k]['idRangeOffset'] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $subHeaders[$k]['idRangeOffset'] -= (2 + (($numSubHeaders - $k - 1) * 8)); - $subHeaders[$k]['idRangeOffset'] /= 2; - $numGlyphIndexArray += $subHeaders[$k]['entryCount']; - } - for ($k = 0; $k < $numGlyphIndexArray; ++$k) { - $glyphIndexArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - for ($i = 0; $i < 256; ++$i) { - $k = $subHeaderKeys[$i]; - if ($k == 0) { - // one byte code - $c = $i; - if (isset($subsetchars[$c])) { - $g = $glyphIndexArray[0]; - $subsetglyphs[$g] = true; - } - } else { - // two bytes code - $start_byte = $subHeaders[$k]['firstCode']; - $end_byte = $start_byte + $subHeaders[$k]['entryCount']; - for ($j = $start_byte; $j < $end_byte; ++$j) { - // combine high and low bytes - $c = (($i << 8) + $j); - if (isset($subsetchars[$c])) { - $idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']); - $g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536; - if ($g < 0) { - $g = 0; - } - $subsetglyphs[$g] = true; - } - } - } - } - break; - } - case 4: { // Format 4: Segment mapping to delta values - $length = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $offset += 2; // skip version/language - $segCount = floor(TCPDF_STATIC::_getUSHORT($font, $offset) / 2); - $offset += 2; - $offset += 6; // skip searchRange, entrySelector, rangeShift - $endCount = array(); // array of end character codes for each segment - for ($k = 0; $k < $segCount; ++$k) { - $endCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - $offset += 2; // skip reservedPad - $startCount = array(); // array of start character codes for each segment - for ($k = 0; $k < $segCount; ++$k) { - $startCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - $idDelta = array(); // delta for all character codes in segment - for ($k = 0; $k < $segCount; ++$k) { - $idDelta[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - $idRangeOffset = array(); // Offsets into glyphIdArray or 0 - for ($k = 0; $k < $segCount; ++$k) { - $idRangeOffset[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - $gidlen = (floor($length / 2) - 8 - (4 * $segCount)); - $glyphIdArray = array(); // glyph index array - for ($k = 0; $k < $gidlen; ++$k) { - $glyphIdArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - } - for ($k = 0; $k < $segCount; ++$k) { - for ($c = $startCount[$k]; $c <= $endCount[$k]; ++$c) { - if (isset($subsetchars[$c])) { - if ($idRangeOffset[$k] == 0) { - $g = ($idDelta[$k] + $c) % 65536; - } else { - $gid = (floor($idRangeOffset[$k] / 2) + ($c - $startCount[$k]) - ($segCount - $k)); - $g = ($glyphIdArray[$gid] + $idDelta[$k]) % 65536; - } - if ($g < 0) { - $g = 0; - } - $subsetglyphs[$g] = true; - } - } - } - break; - } - case 6: { // Format 6: Trimmed table mapping - $offset += 4; // skip length and version/language - $firstCode = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $entryCount = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - for ($k = 0; $k < $entryCount; ++$k) { - $c = ($k + $firstCode); - if (isset($subsetchars[$c])) { - $g = TCPDF_STATIC::_getUSHORT($font, $offset); - $subsetglyphs[$g] = true; - } - $offset += 2; - } - break; - } - case 8: { // Format 8: Mixed 16-bit and 32-bit coverage - $offset += 10; // skip reserved, length and version/language - for ($k = 0; $k < 8192; ++$k) { - $is32[$k] = TCPDF_STATIC::_getBYTE($font, $offset); - ++$offset; - } - $nGroups = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($i = 0; $i < $nGroups; ++$i) { - $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $startGlyphID = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($k = $startCharCode; $k <= $endCharCode; ++$k) { - $is32idx = floor($c / 8); - if ((isset($is32[$is32idx])) AND (($is32[$is32idx] & (1 << (7 - ($c % 8)))) == 0)) { - $c = $k; - } else { - // 32 bit format - // convert to decimal (http://www.unicode.org/faq//utf_bom.html#utf16-4) - //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232 - //SURROGATE_OFFSET = (0x10000 - (0xD800 << 10) - 0xDC00) = -56613888 - $c = ((55232 + ($k >> 10)) << 10) + (0xDC00 + ($k & 0x3FF)) -56613888; - } - if (isset($subsetchars[$c])) { - $subsetglyphs[$startGlyphID] = true; - } - ++$startGlyphID; - } - } - break; - } - case 10: { // Format 10: Trimmed array - $offset += 10; // skip reserved, length and version/language - $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $numChars = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($k = 0; $k < $numChars; ++$k) { - $c = ($k + $startCharCode); - if (isset($subsetchars[$c])) { - $g = TCPDF_STATIC::_getUSHORT($font, $offset); - $subsetglyphs[$g] = true; - } - $offset += 2; - } - break; - } - case 12: { // Format 12: Segmented coverage - $offset += 10; // skip length and version/language - $nGroups = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($k = 0; $k < $nGroups; ++$k) { - $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - $startGlyphCode = TCPDF_STATIC::_getULONG($font, $offset); - $offset += 4; - for ($c = $startCharCode; $c <= $endCharCode; ++$c) { - if (isset($subsetchars[$c])) { - $subsetglyphs[$startGlyphCode] = true; - } - ++$startGlyphCode; - } - } - break; - } - case 13: { // Format 13: Many-to-one range mappings - // to be implemented ... - break; - } - case 14: { // Format 14: Unicode Variation Sequences - // to be implemented ... - break; - } - } - } - // include all parts of composite glyphs - $new_sga = $subsetglyphs; - while (!empty($new_sga)) { - $sga = $new_sga; - $new_sga = array(); - foreach ($sga as $key => $val) { - if (isset($indexToLoc[$key])) { - $offset = ($table['glyf']['offset'] + $indexToLoc[$key]); - $numberOfContours = TCPDF_STATIC::_getSHORT($font, $offset); - $offset += 2; - if ($numberOfContours < 0) { // composite glyph - $offset += 8; // skip xMin, yMin, xMax, yMax - do { - $flags = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - $glyphIndex = TCPDF_STATIC::_getUSHORT($font, $offset); - $offset += 2; - if (!isset($subsetglyphs[$glyphIndex])) { - // add missing glyphs - $new_sga[$glyphIndex] = true; - } - // skip some bytes by case - if ($flags & 1) { - $offset += 4; - } else { - $offset += 2; - } - if ($flags & 8) { - $offset += 2; - } elseif ($flags & 64) { - $offset += 4; - } elseif ($flags & 128) { - $offset += 8; - } - } while ($flags & 32); - } - } - } - $subsetglyphs += $new_sga; - } - // sort glyphs by key (and remove duplicates) - ksort($subsetglyphs); - // build new glyf and loca tables - $glyf = ''; - $loca = ''; - $offset = 0; - $glyf_offset = $table['glyf']['offset']; - for ($i = 0; $i < $tot_num_glyphs; ++$i) { - if (isset($subsetglyphs[$i])) { - $length = ($indexToLoc[($i + 1)] - $indexToLoc[$i]); - $glyf .= substr($font, ($glyf_offset + $indexToLoc[$i]), $length); - } else { - $length = 0; - } - if ($short_offset) { - $loca .= pack('n', floor($offset / 2)); - } else { - $loca .= pack('N', $offset); - } - $offset += $length; - } - // array of table names to preserve (loca and glyf tables will be added later) - // the cmap table is not needed and shall not be present, since the mapping from character codes to glyph descriptions is provided separately - $table_names = array ('head', 'hhea', 'hmtx', 'maxp', 'cvt ', 'fpgm', 'prep'); // minimum required table names - // get the tables to preserve - $offset = 12; - foreach ($table as $tag => $val) { - if (in_array($tag, $table_names)) { - $table[$tag]['data'] = substr($font, $table[$tag]['offset'], $table[$tag]['length']); - if ($tag == 'head') { - // set the checkSumAdjustment to 0 - $table[$tag]['data'] = substr($table[$tag]['data'], 0, 8)."\x0\x0\x0\x0".substr($table[$tag]['data'], 12); - } - $pad = 4 - ($table[$tag]['length'] % 4); - if ($pad != 4) { - // the length of a table must be a multiple of four bytes - $table[$tag]['length'] += $pad; - $table[$tag]['data'] .= str_repeat("\x0", $pad); - } - $table[$tag]['offset'] = $offset; - $offset += $table[$tag]['length']; - // check sum is not changed (so keep the following line commented) - //$table[$tag]['checkSum'] = self::_getTTFtableChecksum($table[$tag]['data'], $table[$tag]['length']); - } else { - unset($table[$tag]); - } - } - // add loca - $table['loca']['data'] = $loca; - $table['loca']['length'] = strlen($loca); - $pad = 4 - ($table['loca']['length'] % 4); - if ($pad != 4) { - // the length of a table must be a multiple of four bytes - $table['loca']['length'] += $pad; - $table['loca']['data'] .= str_repeat("\x0", $pad); - } - $table['loca']['offset'] = $offset; - $table['loca']['checkSum'] = self::_getTTFtableChecksum($table['loca']['data'], $table['loca']['length']); - $offset += $table['loca']['length']; - // add glyf - $table['glyf']['data'] = $glyf; - $table['glyf']['length'] = strlen($glyf); - $pad = 4 - ($table['glyf']['length'] % 4); - if ($pad != 4) { - // the length of a table must be a multiple of four bytes - $table['glyf']['length'] += $pad; - $table['glyf']['data'] .= str_repeat("\x0", $pad); - } - $table['glyf']['offset'] = $offset; - $table['glyf']['checkSum'] = self::_getTTFtableChecksum($table['glyf']['data'], $table['glyf']['length']); - // rebuild font - $font = ''; - $font .= pack('N', 0x10000); // sfnt version - $numTables = count($table); - $font .= pack('n', $numTables); // numTables - $entrySelector = floor(log($numTables, 2)); - $searchRange = pow(2, $entrySelector) * 16; - $rangeShift = ($numTables * 16) - $searchRange; - $font .= pack('n', $searchRange); // searchRange - $font .= pack('n', $entrySelector); // entrySelector - $font .= pack('n', $rangeShift); // rangeShift - $offset = ($numTables * 16); - foreach ($table as $tag => $data) { - $font .= $tag; // tag - $font .= pack('N', $data['checkSum']); // checkSum - $font .= pack('N', ($data['offset'] + $offset)); // offset - $font .= pack('N', $data['length']); // length - } - foreach ($table as $data) { - $font .= $data['data']; - } - // set checkSumAdjustment on head table - $checkSumAdjustment = 0xB1B0AFBA - self::_getTTFtableChecksum($font, strlen($font)); - $font = substr($font, 0, $table['head']['offset'] + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + 12); - return $font; - } - - /** - * Outputs font widths - * @param $font (array) font data - * @param $cidoffset (int) offset for CID values - * @return PDF command string for font widths - * @author Nicola Asuni - * @since 4.4.000 (2008-12-07) - * @public static - */ - public static function _putfontwidths($font, $cidoffset=0) { - ksort($font['cw']); - $rangeid = 0; - $range = array(); - $prevcid = -2; - $prevwidth = -1; - $interval = false; - // for each character - foreach ($font['cw'] as $cid => $width) { - $cid -= $cidoffset; - if ($font['subset'] AND (!isset($font['subsetchars'][$cid]))) { - // ignore the unused characters (font subsetting) - continue; - } - if ($width != $font['dw']) { - if ($cid == ($prevcid + 1)) { - // consecutive CID - if ($width == $prevwidth) { - if ($width == $range[$rangeid][0]) { - $range[$rangeid][] = $width; - } else { - array_pop($range[$rangeid]); - // new range - $rangeid = $prevcid; - $range[$rangeid] = array(); - $range[$rangeid][] = $prevwidth; - $range[$rangeid][] = $width; - } - $interval = true; - $range[$rangeid]['interval'] = true; - } else { - if ($interval) { - // new range - $rangeid = $cid; - $range[$rangeid] = array(); - $range[$rangeid][] = $width; - } else { - $range[$rangeid][] = $width; - } - $interval = false; - } - } else { - // new range - $rangeid = $cid; - $range[$rangeid] = array(); - $range[$rangeid][] = $width; - $interval = false; - } - $prevcid = $cid; - $prevwidth = $width; - } - } - // optimize ranges - $prevk = -1; - $nextk = -1; - $prevint = false; - foreach ($range as $k => $ws) { - $cws = count($ws); - if (($k == $nextk) AND (!$prevint) AND ((!isset($ws['interval'])) OR ($cws < 4))) { - if (isset($range[$k]['interval'])) { - unset($range[$k]['interval']); - } - $range[$prevk] = array_merge($range[$prevk], $range[$k]); - unset($range[$k]); - } else { - $prevk = $k; - } - $nextk = $k + $cws; - if (isset($ws['interval'])) { - if ($cws > 3) { - $prevint = true; - } else { - $prevint = false; - } - if (isset($range[$k]['interval'])) { - unset($range[$k]['interval']); - } - --$nextk; - } else { - $prevint = false; - } - } - // output data - $w = ''; - foreach ($range as $k => $ws) { - if (count(array_count_values($ws)) == 1) { - // interval mode is more compact - $w .= ' '.$k.' '.($k + count($ws) - 1).' '.$ws[0]; - } else { - // range mode - $w .= ' '.$k.' [ '.implode(' ', $ws).' ]'; - } - } - return '/W ['.$w.' ]'; - } - - /** - * Returns the unicode caracter specified by the value - * @param $c (int) UTF-8 value - * @param $unicode (boolean) True if we are in unicode mode, false otherwise. - * @return Returns the specified character. - * @since 2.3.000 (2008-03-05) - * @public static - */ - public static function unichr($c, $unicode=true) { - if (!$unicode) { - return chr($c); - } elseif ($c <= 0x7F) { - // one byte - return chr($c); - } elseif ($c <= 0x7FF) { - // two bytes - return chr(0xC0 | $c >> 6).chr(0x80 | $c & 0x3F); - } elseif ($c <= 0xFFFF) { - // three bytes - return chr(0xE0 | $c >> 12).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F); - } elseif ($c <= 0x10FFFF) { - // four bytes - return chr(0xF0 | $c >> 18).chr(0x80 | $c >> 12 & 0x3F).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F); - } else { - return ''; - } - } - - /** - * Returns the unicode caracter specified by UTF-8 value - * @param $c (int) UTF-8 value - * @return Returns the specified character. - * @public static - */ - public static function unichrUnicode($c) { - return self::unichr($c, true); - } - - /** - * Returns the unicode caracter specified by ASCII value - * @param $c (int) UTF-8 value - * @return Returns the specified character. - * @public static - */ - public static function unichrASCII($c) { - return self::unichr($c, false); - } - - /** - * Converts array of UTF-8 characters to UTF16-BE string.
- * Based on: http://www.faqs.org/rfcs/rfc2781.html - *

-	 *   Encoding UTF-16:
-	 *
-	 *   Encoding of a single character from an ISO 10646 character value to
-	 *    UTF-16 proceeds as follows. Let U be the character number, no greater
-	 *    than 0x10FFFF.
-	 *
-	 *    1) If U < 0x10000, encode U as a 16-bit unsigned integer and
-	 *       terminate.
-	 *
-	 *    2) Let U' = U - 0x10000. Because U is less than or equal to 0x10FFFF,
-	 *       U' must be less than or equal to 0xFFFFF. That is, U' can be
-	 *       represented in 20 bits.
-	 *
-	 *    3) Initialize two 16-bit unsigned integers, W1 and W2, to 0xD800 and
-	 *       0xDC00, respectively. These integers each have 10 bits free to
-	 *       encode the character value, for a total of 20 bits.
-	 *
-	 *    4) Assign the 10 high-order bits of the 20-bit U' to the 10 low-order
-	 *       bits of W1 and the 10 low-order bits of U' to the 10 low-order
-	 *       bits of W2. Terminate.
-	 *
-	 *    Graphically, steps 2 through 4 look like:
-	 *    U' = yyyyyyyyyyxxxxxxxxxx
-	 *    W1 = 110110yyyyyyyyyy
-	 *    W2 = 110111xxxxxxxxxx
-	 * 
- * @param $unicode (array) array containing UTF-8 unicode values - * @param $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF) - * @return string - * @protected - * @author Nicola Asuni - * @since 2.1.000 (2008-01-08) - * @public static - */ - public static function arrUTF8ToUTF16BE($unicode, $setbom=false) { - $outstr = ''; // string to be returned - if ($setbom) { - $outstr .= "\xFE\xFF"; // Byte Order Mark (BOM) - } - foreach ($unicode as $char) { - if ($char == 0x200b) { - // skip Unicode Character 'ZERO WIDTH SPACE' (DEC:8203, U+200B) - } elseif ($char == 0xFFFD) { - $outstr .= "\xFF\xFD"; // replacement character - } elseif ($char < 0x10000) { - $outstr .= chr($char >> 0x08); - $outstr .= chr($char & 0xFF); - } else { - $char -= 0x10000; - $w1 = 0xD800 | ($char >> 0x0a); - $w2 = 0xDC00 | ($char & 0x3FF); - $outstr .= chr($w1 >> 0x08); - $outstr .= chr($w1 & 0xFF); - $outstr .= chr($w2 >> 0x08); - $outstr .= chr($w2 & 0xFF); - } - } - return $outstr; - } - - /** - * Convert an array of UTF8 values to array of unicode characters - * @param $ta (array) The input array of UTF8 values. - * @param $isunicode (boolean) True for Unicode mode, false otherwise. - * @return Return array of unicode characters - * @since 4.5.037 (2009-04-07) - * @public static - */ - public static function UTF8ArrayToUniArray($ta, $isunicode=true) { - if ($isunicode) { - return array_map(array('TCPDF_FONTS', 'unichrUnicode'), $ta); - } - return array_map(array('TCPDF_FONTS', 'unichrASCII'), $ta); - } - - /** - * Extract a slice of the $strarr array and return it as string. - * @param $strarr (string) The input array of characters. - * @param $start (int) the starting element of $strarr. - * @param $end (int) first element that will not be returned. - * @param $unicode (boolean) True if we are in unicode mode, false otherwise. - * @return Return part of a string - * @public static - */ - public static function UTF8ArrSubString($strarr, $start='', $end='', $unicode=true) { - if (strlen($start) == 0) { - $start = 0; - } - if (strlen($end) == 0) { - $end = count($strarr); - } - $string = ''; - for ($i = $start; $i < $end; ++$i) { - $string .= self::unichr($strarr[$i], $unicode); - } - return $string; - } - - /** - * Extract a slice of the $uniarr array and return it as string. - * @param $uniarr (string) The input array of characters. - * @param $start (int) the starting element of $strarr. - * @param $end (int) first element that will not be returned. - * @return Return part of a string - * @since 4.5.037 (2009-04-07) - * @public static - */ - public static function UniArrSubString($uniarr, $start='', $end='') { - if (strlen($start) == 0) { - $start = 0; - } - if (strlen($end) == 0) { - $end = count($uniarr); - } - $string = ''; - for ($i=$start; $i < $end; ++$i) { - $string .= $uniarr[$i]; - } - return $string; - } - - /** - * Update the CIDToGIDMap string with a new value. - * @param $map (string) CIDToGIDMap. - * @param $cid (int) CID value. - * @param $gid (int) GID value. - * @return (string) CIDToGIDMap. - * @author Nicola Asuni - * @since 5.9.123 (2011-09-29) - * @public static - */ - public static function updateCIDtoGIDmap($map, $cid, $gid) { - if (($cid >= 0) AND ($cid <= 0xFFFF) AND ($gid >= 0)) { - if ($gid > 0xFFFF) { - $gid -= 0x10000; - } - $map[($cid * 2)] = chr($gid >> 8); - $map[(($cid * 2) + 1)] = chr($gid & 0xFF); - } - return $map; - } - - /** - * Return fonts path - * @return string - * @public static - */ - public static function _getfontpath() { - if (!defined('K_PATH_FONTS') AND is_dir($fdir = realpath(dirname(__FILE__).'/../fonts'))) { - if (substr($fdir, -1) != '/') { - $fdir .= '/'; - } - define('K_PATH_FONTS', $fdir); - } - return defined('K_PATH_FONTS') ? K_PATH_FONTS : ''; - } - - /** - * Return font full path - * @param $file (string) Font file name. - * @param $fontdir (string) Font directory (set to false fto search on default directories) - * @return string Font full path or empty string - * @author Nicola Asuni - * @since 6.0.025 - * @public static - */ - public static function getFontFullPath($file, $fontdir=false) { - $fontfile = ''; - // search files on various directories - if (($fontdir !== false) AND @file_exists($fontdir.$file)) { - $fontfile = $fontdir.$file; - } elseif (@file_exists(self::_getfontpath().$file)) { - $fontfile = self::_getfontpath().$file; - } elseif (@file_exists($file)) { - $fontfile = $file; - } - return $fontfile; - } - - /** - * Converts UTF-8 characters array to array of Latin1 characters array
- * @param $unicode (array) array containing UTF-8 unicode values - * @return array - * @author Nicola Asuni - * @since 4.8.023 (2010-01-15) - * @public static - */ - public static function UTF8ArrToLatin1Arr($unicode) { - $outarr = array(); // array to be returned - foreach ($unicode as $char) { - if ($char < 256) { - $outarr[] = $char; - } elseif (array_key_exists($char, TCPDF_FONT_DATA::$uni_utf8tolatin)) { - // map from UTF-8 - $outarr[] = TCPDF_FONT_DATA::$uni_utf8tolatin[$char]; - } elseif ($char == 0xFFFD) { - // skip - } else { - $outarr[] = 63; // '?' character - } - } - return $outarr; - } - - /** - * Converts UTF-8 characters array to array of Latin1 string
- * @param $unicode (array) array containing UTF-8 unicode values - * @return array - * @author Nicola Asuni - * @since 4.8.023 (2010-01-15) - * @public static - */ - public static function UTF8ArrToLatin1($unicode) { - $outstr = ''; // string to be returned - foreach ($unicode as $char) { - if ($char < 256) { - $outstr .= chr($char); - } elseif (array_key_exists($char, TCPDF_FONT_DATA::$uni_utf8tolatin)) { - // map from UTF-8 - $outstr .= chr(TCPDF_FONT_DATA::$uni_utf8tolatin[$char]); - } elseif ($char == 0xFFFD) { - // skip - } else { - $outstr .= '?'; - } - } - return $outstr; - } - - /** - * Converts UTF-8 character to integer value.
- * Uses the getUniord() method if the value is not cached. - * @param $uch (string) character string to process. - * @return integer Unicode value - * @public static - */ - public static function uniord($uch) { - if (!isset(self::$cache_uniord[$uch])) { - self::$cache_uniord[$uch] = self::getUniord($uch); - } - return self::$cache_uniord[$uch]; - } - - /** - * Converts UTF-8 character to integer value.
- * Invalid byte sequences will be replaced with 0xFFFD (replacement character)
- * Based on: http://www.faqs.org/rfcs/rfc3629.html - *
-	 *    Char. number range  |        UTF-8 octet sequence
-	 *       (hexadecimal)    |              (binary)
-	 *    --------------------+-----------------------------------------------
-	 *    0000 0000-0000 007F | 0xxxxxxx
-	 *    0000 0080-0000 07FF | 110xxxxx 10xxxxxx
-	 *    0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
-	 *    0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-	 *    ---------------------------------------------------------------------
-	 *
-	 *   ABFN notation:
-	 *   ---------------------------------------------------------------------
-	 *   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
-	 *   ---------------------------------------------------------------------
-	 * 
- * @param $uch (string) character string to process. - * @return integer Unicode value - * @author Nicola Asuni - * @public static - */ - public static function getUniord($uch) { - if (function_exists('mb_convert_encoding')) { - list(, $char) = @unpack('N', mb_convert_encoding($uch, 'UCS-4BE', 'UTF-8')); - if ($char >= 0) { - return $char; - } - } - $bytes = array(); // array containing single character byte sequences - $countbytes = 0; - $numbytes = 1; // number of octetc needed to represent the UTF-8 character - $length = strlen($uch); - for ($i = 0; $i < $length; ++$i) { - $char = ord($uch[$i]); // get one string character at time - if ($countbytes == 0) { // get starting octect - if ($char <= 0x7F) { - return $char; // use the character "as is" because is ASCII - } elseif (($char >> 0x05) == 0x06) { // 2 bytes character (0x06 = 110 BIN) - $bytes[] = ($char - 0xC0) << 0x06; - ++$countbytes; - $numbytes = 2; - } elseif (($char >> 0x04) == 0x0E) { // 3 bytes character (0x0E = 1110 BIN) - $bytes[] = ($char - 0xE0) << 0x0C; - ++$countbytes; - $numbytes = 3; - } elseif (($char >> 0x03) == 0x1E) { // 4 bytes character (0x1E = 11110 BIN) - $bytes[] = ($char - 0xF0) << 0x12; - ++$countbytes; - $numbytes = 4; - } else { - // use replacement character for other invalid sequences - return 0xFFFD; - } - } elseif (($char >> 0x06) == 0x02) { // bytes 2, 3 and 4 must start with 0x02 = 10 BIN - $bytes[] = $char - 0x80; - ++$countbytes; - if ($countbytes == $numbytes) { - // compose UTF-8 bytes to a single unicode value - $char = $bytes[0]; - for ($j = 1; $j < $numbytes; ++$j) { - $char += ($bytes[$j] << (($numbytes - $j - 1) * 0x06)); - } - if ((($char >= 0xD800) AND ($char <= 0xDFFF)) OR ($char >= 0x10FFFF)) { - // The definition of UTF-8 prohibits encoding character numbers between - // U+D800 and U+DFFF, which are reserved for use with the UTF-16 - // encoding form (as surrogate pairs) and do not directly represent - // characters. - return 0xFFFD; // use replacement character - } else { - return $char; - } - } - } else { - // use replacement character for other invalid sequences - return 0xFFFD; - } - } - return 0xFFFD; - } - - /** - * Converts UTF-8 strings to codepoints array.
- * Invalid byte sequences will be replaced with 0xFFFD (replacement character)
- * @param $str (string) string to process. - * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. - * @param $currentfont (array) Reference to current font array. - * @return array containing codepoints (UTF-8 characters values) - * @author Nicola Asuni - * @public static - */ - public static function UTF8StringToArray($str, $isunicode=true, &$currentfont) { - if ($isunicode) { - // requires PCRE unicode support turned on - $chars = TCPDF_STATIC::pregSplit('//','u', $str, -1, PREG_SPLIT_NO_EMPTY); - $carr = array_map(array('TCPDF_FONTS', 'uniord'), $chars); - } else { - $chars = str_split($str); - $carr = array_map('ord', $chars); - } - $currentfont['subsetchars'] += array_fill_keys($carr, true); - return $carr; - } - - /** - * Converts UTF-8 strings to Latin1 when using the standard 14 core fonts.
- * @param $str (string) string to process. - * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. - * @param $currentfont (array) Reference to current font array. - * @return string - * @since 3.2.000 (2008-06-23) - * @public static - */ - public static function UTF8ToLatin1($str, $isunicode=true, &$currentfont) { - $unicode = self::UTF8StringToArray($str, $isunicode, $currentfont); // array containing UTF-8 unicode values - return self::UTF8ArrToLatin1($unicode); - } - - /** - * Converts UTF-8 strings to UTF16-BE.
- * @param $str (string) string to process. - * @param $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF) - * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. - * @param $currentfont (array) Reference to current font array. - * @return string - * @author Nicola Asuni - * @since 1.53.0.TC005 (2005-01-05) - * @public static - */ - public static function UTF8ToUTF16BE($str, $setbom=false, $isunicode=true, &$currentfont) { - if (!$isunicode) { - return $str; // string is not in unicode - } - $unicode = self::UTF8StringToArray($str, $isunicode, $currentfont); // array containing UTF-8 unicode values - return self::arrUTF8ToUTF16BE($unicode, $setbom); - } - - /** - * Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). - * @param $str (string) string to manipulate. - * @param $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF) - * @param $forcertl (bool) if true forces RTL text direction - * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. - * @param $currentfont (array) Reference to current font array. - * @return string - * @author Nicola Asuni - * @since 2.1.000 (2008-01-08) - * @public static - */ - public static function utf8StrRev($str, $setbom=false, $forcertl=false, $isunicode=true, &$currentfont) { - return self::utf8StrArrRev(self::UTF8StringToArray($str, $isunicode, $currentfont), $str, $setbom, $forcertl, $isunicode, $currentfont); - } - - /** - * Reverse the RLT substrings array using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). - * @param $arr (array) array of unicode values. - * @param $str (string) string to manipulate (or empty value). - * @param $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF) - * @param $forcertl (bool) if true forces RTL text direction - * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. - * @param $currentfont (array) Reference to current font array. - * @return string - * @author Nicola Asuni - * @since 4.9.000 (2010-03-27) - * @public static - */ - public static function utf8StrArrRev($arr, $str='', $setbom=false, $forcertl=false, $isunicode=true, &$currentfont) { - return self::arrUTF8ToUTF16BE(self::utf8Bidi($arr, $str, $forcertl, $isunicode, $currentfont), $setbom); - } - - /** - * Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). - * @param $ta (array) array of characters composing the string. - * @param $str (string) string to process - * @param $forcertl (bool) if 'R' forces RTL, if 'L' forces LTR - * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. - * @param $currentfont (array) Reference to current font array. - * @return array of unicode chars - * @author Nicola Asuni - * @since 2.4.000 (2008-03-06) - * @public static - */ - public static function utf8Bidi($ta, $str='', $forcertl=false, $isunicode=true, &$currentfont) { - // paragraph embedding level - $pel = 0; - // max level - $maxlevel = 0; - if (TCPDF_STATIC::empty_string($str)) { - // create string from array - $str = self::UTF8ArrSubString($ta, '', '', $isunicode); - } - // check if string contains arabic text - if (preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_ARABIC, $str)) { - $arabic = true; - } else { - $arabic = false; - } - // check if string contains RTL text - if (!($forcertl OR $arabic OR preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_RTL, $str))) { - return $ta; - } - - // get number of chars - $numchars = count($ta); - - if ($forcertl == 'R') { - $pel = 1; - } elseif ($forcertl == 'L') { - $pel = 0; - } else { - // P2. In each paragraph, find the first character of type L, AL, or R. - // P3. If a character is found in P2 and it is of type AL or R, then set the paragraph embedding level to one; otherwise, set it to zero. - for ($i=0; $i < $numchars; ++$i) { - $type = TCPDF_FONT_DATA::$uni_type[$ta[$i]]; - if ($type == 'L') { - $pel = 0; - break; - } elseif (($type == 'AL') OR ($type == 'R')) { - $pel = 1; - break; - } - } - } - - // Current Embedding Level - $cel = $pel; - // directional override status - $dos = 'N'; - $remember = array(); - // start-of-level-run - $sor = $pel % 2 ? 'R' : 'L'; - $eor = $sor; - - // Array of characters data - $chardata = Array(); - - // X1. Begin by setting the current embedding level to the paragraph embedding level. Set the directional override status to neutral. Process each character iteratively, applying rules X2 through X9. Only embedding levels from 0 to 61 are valid in this phase. - // In the resolution of levels in rules I1 and I2, the maximum embedding level of 62 can be reached. - for ($i=0; $i < $numchars; ++$i) { - if ($ta[$i] == TCPDF_FONT_DATA::$uni_RLE) { - // X2. With each RLE, compute the least greater odd embedding level. - // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. - // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. - $next_level = $cel + ($cel % 2) + 1; - if ($next_level < 62) { - $remember[] = array('num' => TCPDF_FONT_DATA::$uni_RLE, 'cel' => $cel, 'dos' => $dos); - $cel = $next_level; - $dos = 'N'; - $sor = $eor; - $eor = $cel % 2 ? 'R' : 'L'; - } - } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_LRE) { - // X3. With each LRE, compute the least greater even embedding level. - // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. - // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. - $next_level = $cel + 2 - ($cel % 2); - if ( $next_level < 62 ) { - $remember[] = array('num' => TCPDF_FONT_DATA::$uni_LRE, 'cel' => $cel, 'dos' => $dos); - $cel = $next_level; - $dos = 'N'; - $sor = $eor; - $eor = $cel % 2 ? 'R' : 'L'; - } - } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_RLO) { - // X4. With each RLO, compute the least greater odd embedding level. - // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to right-to-left. - // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. - $next_level = $cel + ($cel % 2) + 1; - if ($next_level < 62) { - $remember[] = array('num' => TCPDF_FONT_DATA::$uni_RLO, 'cel' => $cel, 'dos' => $dos); - $cel = $next_level; - $dos = 'R'; - $sor = $eor; - $eor = $cel % 2 ? 'R' : 'L'; - } - } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_LRO) { - // X5. With each LRO, compute the least greater even embedding level. - // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to left-to-right. - // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. - $next_level = $cel + 2 - ($cel % 2); - if ( $next_level < 62 ) { - $remember[] = array('num' => TCPDF_FONT_DATA::$uni_LRO, 'cel' => $cel, 'dos' => $dos); - $cel = $next_level; - $dos = 'L'; - $sor = $eor; - $eor = $cel % 2 ? 'R' : 'L'; - } - } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_PDF) { - // X7. With each PDF, determine the matching embedding or override code. If there was a valid matching code, restore (pop) the last remembered (pushed) embedding level and directional override. - if (count($remember)) { - $last = count($remember ) - 1; - if (($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_RLE) OR - ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_LRE) OR - ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_RLO) OR - ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_LRO)) { - $match = array_pop($remember); - $cel = $match['cel']; - $dos = $match['dos']; - $sor = $eor; - $eor = ($cel > $match['cel'] ? $cel : $match['cel']) % 2 ? 'R' : 'L'; - } - } - } elseif (($ta[$i] != TCPDF_FONT_DATA::$uni_RLE) AND - ($ta[$i] != TCPDF_FONT_DATA::$uni_LRE) AND - ($ta[$i] != TCPDF_FONT_DATA::$uni_RLO) AND - ($ta[$i] != TCPDF_FONT_DATA::$uni_LRO) AND - ($ta[$i] != TCPDF_FONT_DATA::$uni_PDF)) { - // X6. For all types besides RLE, LRE, RLO, LRO, and PDF: - // a. Set the level of the current character to the current embedding level. - // b. Whenever the directional override status is not neutral, reset the current character type to the directional override status. - if ($dos != 'N') { - $chardir = $dos; - } else { - if (isset(TCPDF_FONT_DATA::$uni_type[$ta[$i]])) { - $chardir = TCPDF_FONT_DATA::$uni_type[$ta[$i]]; - } else { - $chardir = 'L'; - } - } - // stores string characters and other information - $chardata[] = array('char' => $ta[$i], 'level' => $cel, 'type' => $chardir, 'sor' => $sor, 'eor' => $eor); - } - } // end for each char - - // X8. All explicit directional embeddings and overrides are completely terminated at the end of each paragraph. Paragraph separators are not included in the embedding. - // X9. Remove all RLE, LRE, RLO, LRO, PDF, and BN codes. - // X10. The remaining rules are applied to each run of characters at the same level. For each run, determine the start-of-level-run (sor) and end-of-level-run (eor) type, either L or R. This depends on the higher of the two levels on either side of the boundary (at the start or end of the paragraph, the level of the 'other' run is the base embedding level). If the higher level is odd, the type is R; otherwise, it is L. - - // 3.3.3 Resolving Weak Types - // Weak types are now resolved one level run at a time. At level run boundaries where the type of the character on the other side of the boundary is required, the type assigned to sor or eor is used. - // Nonspacing marks are now resolved based on the previous characters. - $numchars = count($chardata); - - // W1. Examine each nonspacing mark (NSM) in the level run, and change the type of the NSM to the type of the previous character. If the NSM is at the start of the level run, it will get the type of sor. - $prevlevel = -1; // track level changes - $levcount = 0; // counts consecutive chars at the same level - for ($i=0; $i < $numchars; ++$i) { - if ($chardata[$i]['type'] == 'NSM') { - if ($levcount) { - $chardata[$i]['type'] = $chardata[$i]['sor']; - } elseif ($i > 0) { - $chardata[$i]['type'] = $chardata[($i-1)]['type']; - } - } - if ($chardata[$i]['level'] != $prevlevel) { - $levcount = 0; - } else { - ++$levcount; - } - $prevlevel = $chardata[$i]['level']; - } - - // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sor) is found. If an AL is found, change the type of the European number to Arabic number. - $prevlevel = -1; - $levcount = 0; - for ($i=0; $i < $numchars; ++$i) { - if ($chardata[$i]['char'] == 'EN') { - for ($j=$levcount; $j >= 0; $j--) { - if ($chardata[$j]['type'] == 'AL') { - $chardata[$i]['type'] = 'AN'; - } elseif (($chardata[$j]['type'] == 'L') OR ($chardata[$j]['type'] == 'R')) { - break; - } - } - } - if ($chardata[$i]['level'] != $prevlevel) { - $levcount = 0; - } else { - ++$levcount; - } - $prevlevel = $chardata[$i]['level']; - } - - // W3. Change all ALs to R. - for ($i=0; $i < $numchars; ++$i) { - if ($chardata[$i]['type'] == 'AL') { - $chardata[$i]['type'] = 'R'; - } - } - - // W4. A single European separator between two European numbers changes to a European number. A single common separator between two numbers of the same type changes to that type. - $prevlevel = -1; - $levcount = 0; - for ($i=0; $i < $numchars; ++$i) { - if (($levcount > 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { - if (($chardata[$i]['type'] == 'ES') AND ($chardata[($i-1)]['type'] == 'EN') AND ($chardata[($i+1)]['type'] == 'EN')) { - $chardata[$i]['type'] = 'EN'; - } elseif (($chardata[$i]['type'] == 'CS') AND ($chardata[($i-1)]['type'] == 'EN') AND ($chardata[($i+1)]['type'] == 'EN')) { - $chardata[$i]['type'] = 'EN'; - } elseif (($chardata[$i]['type'] == 'CS') AND ($chardata[($i-1)]['type'] == 'AN') AND ($chardata[($i+1)]['type'] == 'AN')) { - $chardata[$i]['type'] = 'AN'; - } - } - if ($chardata[$i]['level'] != $prevlevel) { - $levcount = 0; - } else { - ++$levcount; - } - $prevlevel = $chardata[$i]['level']; - } - - // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers. - $prevlevel = -1; - $levcount = 0; - for ($i=0; $i < $numchars; ++$i) { - if ($chardata[$i]['type'] == 'ET') { - if (($levcount > 0) AND ($chardata[($i-1)]['type'] == 'EN')) { - $chardata[$i]['type'] = 'EN'; - } else { - $j = $i+1; - while (($j < $numchars) AND ($chardata[$j]['level'] == $prevlevel)) { - if ($chardata[$j]['type'] == 'EN') { - $chardata[$i]['type'] = 'EN'; - break; - } elseif ($chardata[$j]['type'] != 'ET') { - break; - } - ++$j; - } - } - } - if ($chardata[$i]['level'] != $prevlevel) { - $levcount = 0; - } else { - ++$levcount; - } - $prevlevel = $chardata[$i]['level']; - } - - // W6. Otherwise, separators and terminators change to Other Neutral. - $prevlevel = -1; - $levcount = 0; - for ($i=0; $i < $numchars; ++$i) { - if (($chardata[$i]['type'] == 'ET') OR ($chardata[$i]['type'] == 'ES') OR ($chardata[$i]['type'] == 'CS')) { - $chardata[$i]['type'] = 'ON'; - } - if ($chardata[$i]['level'] != $prevlevel) { - $levcount = 0; - } else { - ++$levcount; - } - $prevlevel = $chardata[$i]['level']; - } - - //W7. Search backward from each instance of a European number until the first strong type (R, L, or sor) is found. If an L is found, then change the type of the European number to L. - $prevlevel = -1; - $levcount = 0; - for ($i=0; $i < $numchars; ++$i) { - if ($chardata[$i]['char'] == 'EN') { - for ($j=$levcount; $j >= 0; $j--) { - if ($chardata[$j]['type'] == 'L') { - $chardata[$i]['type'] = 'L'; - } elseif ($chardata[$j]['type'] == 'R') { - break; - } - } - } - if ($chardata[$i]['level'] != $prevlevel) { - $levcount = 0; - } else { - ++$levcount; - } - $prevlevel = $chardata[$i]['level']; - } - - // N1. A sequence of neutrals takes the direction of the surrounding strong text if the text on both sides has the same direction. European and Arabic numbers act as if they were R in terms of their influence on neutrals. Start-of-level-run (sor) and end-of-level-run (eor) are used at level run boundaries. - $prevlevel = -1; - $levcount = 0; - for ($i=0; $i < $numchars; ++$i) { - if (($levcount > 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { - if (($chardata[$i]['type'] == 'N') AND ($chardata[($i-1)]['type'] == 'L') AND ($chardata[($i+1)]['type'] == 'L')) { - $chardata[$i]['type'] = 'L'; - } elseif (($chardata[$i]['type'] == 'N') AND - (($chardata[($i-1)]['type'] == 'R') OR ($chardata[($i-1)]['type'] == 'EN') OR ($chardata[($i-1)]['type'] == 'AN')) AND - (($chardata[($i+1)]['type'] == 'R') OR ($chardata[($i+1)]['type'] == 'EN') OR ($chardata[($i+1)]['type'] == 'AN'))) { - $chardata[$i]['type'] = 'R'; - } elseif ($chardata[$i]['type'] == 'N') { - // N2. Any remaining neutrals take the embedding direction - $chardata[$i]['type'] = $chardata[$i]['sor']; - } - } elseif (($levcount == 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { - // first char - if (($chardata[$i]['type'] == 'N') AND ($chardata[$i]['sor'] == 'L') AND ($chardata[($i+1)]['type'] == 'L')) { - $chardata[$i]['type'] = 'L'; - } elseif (($chardata[$i]['type'] == 'N') AND - (($chardata[$i]['sor'] == 'R') OR ($chardata[$i]['sor'] == 'EN') OR ($chardata[$i]['sor'] == 'AN')) AND - (($chardata[($i+1)]['type'] == 'R') OR ($chardata[($i+1)]['type'] == 'EN') OR ($chardata[($i+1)]['type'] == 'AN'))) { - $chardata[$i]['type'] = 'R'; - } elseif ($chardata[$i]['type'] == 'N') { - // N2. Any remaining neutrals take the embedding direction - $chardata[$i]['type'] = $chardata[$i]['sor']; - } - } elseif (($levcount > 0) AND ((($i+1) == $numchars) OR (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] != $prevlevel))) { - //last char - if (($chardata[$i]['type'] == 'N') AND ($chardata[($i-1)]['type'] == 'L') AND ($chardata[$i]['eor'] == 'L')) { - $chardata[$i]['type'] = 'L'; - } elseif (($chardata[$i]['type'] == 'N') AND - (($chardata[($i-1)]['type'] == 'R') OR ($chardata[($i-1)]['type'] == 'EN') OR ($chardata[($i-1)]['type'] == 'AN')) AND - (($chardata[$i]['eor'] == 'R') OR ($chardata[$i]['eor'] == 'EN') OR ($chardata[$i]['eor'] == 'AN'))) { - $chardata[$i]['type'] = 'R'; - } elseif ($chardata[$i]['type'] == 'N') { - // N2. Any remaining neutrals take the embedding direction - $chardata[$i]['type'] = $chardata[$i]['sor']; - } - } elseif ($chardata[$i]['type'] == 'N') { - // N2. Any remaining neutrals take the embedding direction - $chardata[$i]['type'] = $chardata[$i]['sor']; - } - if ($chardata[$i]['level'] != $prevlevel) { - $levcount = 0; - } else { - ++$levcount; - } - $prevlevel = $chardata[$i]['level']; - } - - // I1. For all characters with an even (left-to-right) embedding direction, those of type R go up one level and those of type AN or EN go up two levels. - // I2. For all characters with an odd (right-to-left) embedding direction, those of type L, EN or AN go up one level. - for ($i=0; $i < $numchars; ++$i) { - $odd = $chardata[$i]['level'] % 2; - if ($odd) { - if (($chardata[$i]['type'] == 'L') OR ($chardata[$i]['type'] == 'AN') OR ($chardata[$i]['type'] == 'EN')) { - $chardata[$i]['level'] += 1; - } - } else { - if ($chardata[$i]['type'] == 'R') { - $chardata[$i]['level'] += 1; - } elseif (($chardata[$i]['type'] == 'AN') OR ($chardata[$i]['type'] == 'EN')) { - $chardata[$i]['level'] += 2; - } - } - $maxlevel = max($chardata[$i]['level'],$maxlevel); - } - - // L1. On each line, reset the embedding level of the following characters to the paragraph embedding level: - // 1. Segment separators, - // 2. Paragraph separators, - // 3. Any sequence of whitespace characters preceding a segment separator or paragraph separator, and - // 4. Any sequence of white space characters at the end of the line. - for ($i=0; $i < $numchars; ++$i) { - if (($chardata[$i]['type'] == 'B') OR ($chardata[$i]['type'] == 'S')) { - $chardata[$i]['level'] = $pel; - } elseif ($chardata[$i]['type'] == 'WS') { - $j = $i+1; - while ($j < $numchars) { - if ((($chardata[$j]['type'] == 'B') OR ($chardata[$j]['type'] == 'S')) OR - (($j == ($numchars-1)) AND ($chardata[$j]['type'] == 'WS'))) { - $chardata[$i]['level'] = $pel; - break; - } elseif ($chardata[$j]['type'] != 'WS') { - break; - } - ++$j; - } - } - } - - // Arabic Shaping - // Cursively connected scripts, such as Arabic or Syriac, require the selection of positional character shapes that depend on adjacent characters. Shaping is logically applied after the Bidirectional Algorithm is used and is limited to characters within the same directional run. - if ($arabic) { - $endedletter = array(1569,1570,1571,1572,1573,1575,1577,1583,1584,1585,1586,1608,1688); - $alfletter = array(1570,1571,1573,1575); - $chardata2 = $chardata; - $laaletter = false; - $charAL = array(); - $x = 0; - for ($i=0; $i < $numchars; ++$i) { - if ((TCPDF_FONT_DATA::$uni_type[$chardata[$i]['char']] == 'AL') OR ($chardata[$i]['char'] == 32) OR ($chardata[$i]['char'] == 8204)) { - $charAL[$x] = $chardata[$i]; - $charAL[$x]['i'] = $i; - $chardata[$i]['x'] = $x; - ++$x; - } - } - $numAL = $x; - for ($i=0; $i < $numchars; ++$i) { - $thischar = $chardata[$i]; - if ($i > 0) { - $prevchar = $chardata[($i-1)]; - } else { - $prevchar = false; - } - if (($i+1) < $numchars) { - $nextchar = $chardata[($i+1)]; - } else { - $nextchar = false; - } - if (TCPDF_FONT_DATA::$uni_type[$thischar['char']] == 'AL') { - $x = $thischar['x']; - if ($x > 0) { - $prevchar = $charAL[($x-1)]; - } else { - $prevchar = false; - } - if (($x+1) < $numAL) { - $nextchar = $charAL[($x+1)]; - } else { - $nextchar = false; - } - // if laa letter - if (($prevchar !== false) AND ($prevchar['char'] == 1604) AND (in_array($thischar['char'], $alfletter))) { - $arabicarr = TCPDF_FONT_DATA::$uni_laa_array; - $laaletter = true; - if ($x > 1) { - $prevchar = $charAL[($x-2)]; - } else { - $prevchar = false; - } - } else { - $arabicarr = TCPDF_FONT_DATA::$uni_arabicsubst; - $laaletter = false; - } - if (($prevchar !== false) AND ($nextchar !== false) AND - ((TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'NSM')) AND - ((TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'NSM')) AND - ($prevchar['type'] == $thischar['type']) AND - ($nextchar['type'] == $thischar['type']) AND - ($nextchar['char'] != 1567)) { - if (in_array($prevchar['char'], $endedletter)) { - if (isset($arabicarr[$thischar['char']][2])) { - // initial - $chardata2[$i]['char'] = $arabicarr[$thischar['char']][2]; - } - } else { - if (isset($arabicarr[$thischar['char']][3])) { - // medial - $chardata2[$i]['char'] = $arabicarr[$thischar['char']][3]; - } - } - } elseif (($nextchar !== false) AND - ((TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'NSM')) AND - ($nextchar['type'] == $thischar['type']) AND - ($nextchar['char'] != 1567)) { - if (isset($arabicarr[$chardata[$i]['char']][2])) { - // initial - $chardata2[$i]['char'] = $arabicarr[$thischar['char']][2]; - } - } elseif ((($prevchar !== false) AND - ((TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'NSM')) AND - ($prevchar['type'] == $thischar['type'])) OR - (($nextchar !== false) AND ($nextchar['char'] == 1567))) { - // final - if (($i > 1) AND ($thischar['char'] == 1607) AND - ($chardata[$i-1]['char'] == 1604) AND - ($chardata[$i-2]['char'] == 1604)) { - //Allah Word - // mark characters to delete with false - $chardata2[$i-2]['char'] = false; - $chardata2[$i-1]['char'] = false; - $chardata2[$i]['char'] = 65010; - } else { - if (($prevchar !== false) AND in_array($prevchar['char'], $endedletter)) { - if (isset($arabicarr[$thischar['char']][0])) { - // isolated - $chardata2[$i]['char'] = $arabicarr[$thischar['char']][0]; - } - } else { - if (isset($arabicarr[$thischar['char']][1])) { - // final - $chardata2[$i]['char'] = $arabicarr[$thischar['char']][1]; - } - } - } - } elseif (isset($arabicarr[$thischar['char']][0])) { - // isolated - $chardata2[$i]['char'] = $arabicarr[$thischar['char']][0]; - } - // if laa letter - if ($laaletter) { - // mark characters to delete with false - $chardata2[($charAL[($x-1)]['i'])]['char'] = false; - } - } // end if AL (Arabic Letter) - } // end for each char - /* - * Combining characters that can occur with Arabic Shadda (0651 HEX, 1617 DEC) are replaced. - * Putting the combining mark and shadda in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner. - */ - for ($i = 0; $i < ($numchars-1); ++$i) { - if (($chardata2[$i]['char'] == 1617) AND (isset(TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])]))) { - // check if the subtitution font is defined on current font - if (isset($currentfont['cw'][(TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])])])) { - $chardata2[$i]['char'] = false; - $chardata2[$i+1]['char'] = TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])]; - } - } - } - // remove marked characters - foreach ($chardata2 as $key => $value) { - if ($value['char'] === false) { - unset($chardata2[$key]); - } - } - $chardata = array_values($chardata2); - $numchars = count($chardata); - unset($chardata2); - unset($arabicarr); - unset($laaletter); - unset($charAL); - } - - // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher. - for ($j=$maxlevel; $j > 0; $j--) { - $ordarray = Array(); - $revarr = Array(); - $onlevel = false; - for ($i=0; $i < $numchars; ++$i) { - if ($chardata[$i]['level'] >= $j) { - $onlevel = true; - if (isset(TCPDF_FONT_DATA::$uni_mirror[$chardata[$i]['char']])) { - // L4. A character is depicted by a mirrored glyph if and only if (a) the resolved directionality of that character is R, and (b) the Bidi_Mirrored property value of that character is true. - $chardata[$i]['char'] = TCPDF_FONT_DATA::$uni_mirror[$chardata[$i]['char']]; - } - $revarr[] = $chardata[$i]; - } else { - if ($onlevel) { - $revarr = array_reverse($revarr); - $ordarray = array_merge($ordarray, $revarr); - $revarr = Array(); - $onlevel = false; - } - $ordarray[] = $chardata[$i]; - } - } - if ($onlevel) { - $revarr = array_reverse($revarr); - $ordarray = array_merge($ordarray, $revarr); - } - $chardata = $ordarray; - } - $ordarray = array(); - foreach ($chardata as $cd) { - $ordarray[] = $cd['char']; - // store char values for subsetting - $currentfont['subsetchars'][$cd['char']] = true; - } - return $ordarray; - } - - /** - * Get a reference font size. - * @param $size (string) String containing font size value. - * @param $refsize (float) Reference font size in points. - * @return float value in points - * @public static - */ - public static function getFontRefSize($size, $refsize=12) { - switch ($size) { - case 'xx-small': { - $size = ($refsize - 4); - break; - } - case 'x-small': { - $size = ($refsize - 3); - break; - } - case 'small': { - $size = ($refsize - 2); - break; - } - case 'medium': { - $size = $refsize; - break; - } - case 'large': { - $size = ($refsize + 2); - break; - } - case 'x-large': { - $size = ($refsize + 4); - break; - } - case 'xx-large': { - $size = ($refsize + 6); - break; - } - case 'smaller': { - $size = ($refsize - 3); - break; - } - case 'larger': { - $size = ($refsize + 3); - break; - } - } - return $size; - } - -} // END OF TCPDF_FONTS CLASS - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/libraries/tcpdf/include/tcpdf_images.php b/libraries/tcpdf/include/tcpdf_images.php deleted file mode 100644 index 40cbe9d621..0000000000 --- a/libraries/tcpdf/include/tcpdf_images.php +++ /dev/null @@ -1,363 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : -// Static image methods used by the TCPDF class. -// -//============================================================+ - -/** - * @file - * This is a PHP class that contains static image methods for the TCPDF class.
- * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.0.005 - */ - -/** - * @class TCPDF_IMAGES - * Static image methods used by the TCPDF class. - * @package com.tecnick.tcpdf - * @brief PHP class for generating PDF documents without requiring external extensions. - * @version 1.0.005 - * @author Nicola Asuni - info@tecnick.com - */ -class TCPDF_IMAGES { - - /** - * Array of hinheritable SVG properties. - * @since 5.0.000 (2010-05-02) - * @public static - */ - public static $svginheritprop = array('clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cursor', 'direction', 'display', 'fill', 'fill-opacity', 'fill-rule', 'font', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'image-rendering', 'kerning', 'letter-spacing', 'marker', 'marker-end', 'marker-mid', 'marker-start', 'pointer-events', 'shape-rendering', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-rendering', 'visibility', 'word-spacing', 'writing-mode'); - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** - * Return the image type given the file name or array returned by getimagesize() function. - * @param $imgfile (string) image file name - * @param $iminfo (array) array of image information returned by getimagesize() function. - * @return string image type - * @since 4.8.017 (2009-11-27) - * @public static - */ - public static function getImageFileType($imgfile, $iminfo=array()) { - $type = ''; - if (isset($iminfo['mime']) AND !empty($iminfo['mime'])) { - $mime = explode('/', $iminfo['mime']); - if ((count($mime) > 1) AND ($mime[0] == 'image') AND (!empty($mime[1]))) { - $type = strtolower(trim($mime[1])); - } - } - if (empty($type)) { - $fileinfo = pathinfo($imgfile); - if (isset($fileinfo['extension']) AND (!TCPDF_STATIC::empty_string($fileinfo['extension']))) { - $type = strtolower(trim($fileinfo['extension'])); - } - } - if ($type == 'jpg') { - $type = 'jpeg'; - } - return $type; - } - - /** - * Set the transparency for the given GD image. - * @param $new_image (image) GD image object - * @param $image (image) GD image object. - * return GD image object. - * @since 4.9.016 (2010-04-20) - * @public static - */ - public static function setGDImageTransparency($new_image, $image) { - // default transparency color (white) - $tcol = array('red' => 255, 'green' => 255, 'blue' => 255); - // transparency index - $tid = imagecolortransparent($image); - $palletsize = imagecolorstotal($image); - if (($tid >= 0) AND ($tid < $palletsize)) { - // get the colors for the transparency index - $tcol = imagecolorsforindex($image, $tid); - } - $tid = imagecolorallocate($new_image, $tcol['red'], $tcol['green'], $tcol['blue']); - imagefill($new_image, 0, 0, $tid); - imagecolortransparent($new_image, $tid); - return $new_image; - } - - /** - * Convert the loaded image to a PNG and then return a structure for the PDF creator. - * This function requires GD library and write access to the directory defined on K_PATH_CACHE constant. - * @param $image (image) Image object. - * @param $tempfile (string) Temporary file name. - * return image PNG image object. - * @since 4.9.016 (2010-04-20) - * @public static - */ - public static function _toPNG($image, $tempfile) { - // turn off interlaced mode - imageinterlace($image, 0); - // create temporary PNG image - imagepng($image, $tempfile); - // remove image from memory - imagedestroy($image); - // get PNG image data - $retvars = self::_parsepng($tempfile); - // tidy up by removing temporary image - unlink($tempfile); - return $retvars; - } - - /** - * Convert the loaded image to a JPEG and then return a structure for the PDF creator. - * This function requires GD library and write access to the directory defined on K_PATH_CACHE constant. - * @param $image (image) Image object. - * @param $quality (int) JPEG quality. - * @param $tempfile (string) Temporary file name. - * return image JPEG image object. - * @public static - */ - public static function _toJPEG($image, $quality, $tempfile) { - imagejpeg($image, $tempfile, $quality); - imagedestroy($image); - $retvars = self::_parsejpeg($tempfile); - // tidy up by removing temporary image - unlink($tempfile); - return $retvars; - } - - /** - * Extract info from a JPEG file without using the GD library. - * @param $file (string) image file to parse - * @return array structure containing the image data - * @public static - */ - public static function _parsejpeg($file) { - // check if is a local file - if (!@file_exists($file)) { - // try to encode spaces on filename - $tfile = str_replace(' ', '%20', $file); - if (@file_exists($tfile)) { - $file = $tfile; - } - } - $a = getimagesize($file); - if (empty($a)) { - //Missing or incorrect image file - return false; - } - if ($a[2] != 2) { - // Not a JPEG file - return false; - } - // bits per pixel - $bpc = isset($a['bits']) ? intval($a['bits']) : 8; - // number of image channels - if (!isset($a['channels'])) { - $channels = 3; - } else { - $channels = intval($a['channels']); - } - // default colour space - switch ($channels) { - case 1: { - $colspace = 'DeviceGray'; - break; - } - case 3: { - $colspace = 'DeviceRGB'; - break; - } - case 4: { - $colspace = 'DeviceCMYK'; - break; - } - default: { - $channels = 3; - $colspace = 'DeviceRGB'; - break; - } - } - // get file content - $data = file_get_contents($file); - // check for embedded ICC profile - $icc = array(); - $offset = 0; - while (($pos = strpos($data, "ICC_PROFILE\0", $offset)) !== false) { - // get ICC sequence length - $length = (TCPDF_STATIC::_getUSHORT($data, ($pos - 2)) - 16); - // marker sequence number - $msn = max(1, ord($data[($pos + 12)])); - // number of markers (total of APP2 used) - $nom = max(1, ord($data[($pos + 13)])); - // get sequence segment - $icc[($msn - 1)] = substr($data, ($pos + 14), $length); - // move forward to next sequence - $offset = ($pos + 14 + $length); - } - // order and compact ICC segments - if (count($icc) > 0) { - ksort($icc); - $icc = implode('', $icc); - if ((ord($icc[36]) != 0x61) OR (ord($icc[37]) != 0x63) OR (ord($icc[38]) != 0x73) OR (ord($icc[39]) != 0x70)) { - // invalid ICC profile - $icc = false; - } - } else { - $icc = false; - } - return array('w' => $a[0], 'h' => $a[1], 'ch' => $channels, 'icc' => $icc, 'cs' => $colspace, 'bpc' => $bpc, 'f' => 'DCTDecode', 'data' => $data); - } - - /** - * Extract info from a PNG file without using the GD library. - * @param $file (string) image file to parse - * @return array structure containing the image data - * @public static - */ - public static function _parsepng($file) { - $f = @fopen($file, 'rb'); - if ($f === false) { - // Can't open image file - return false; - } - //Check signature - if (fread($f, 8) != chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { - // Not a PNG file - return false; - } - //Read header chunk - fread($f, 4); - if (fread($f, 4) != 'IHDR') { - //Incorrect PNG file - return false; - } - $w = TCPDF_STATIC::_freadint($f); - $h = TCPDF_STATIC::_freadint($f); - $bpc = ord(fread($f, 1)); - $ct = ord(fread($f, 1)); - if ($ct == 0) { - $colspace = 'DeviceGray'; - } elseif ($ct == 2) { - $colspace = 'DeviceRGB'; - } elseif ($ct == 3) { - $colspace = 'Indexed'; - } else { - // alpha channel - fclose($f); - return 'pngalpha'; - } - if (ord(fread($f, 1)) != 0) { - // Unknown compression method - fclose($f); - return false; - } - if (ord(fread($f, 1)) != 0) { - // Unknown filter method - fclose($f); - return false; - } - if (ord(fread($f, 1)) != 0) { - // Interlacing not supported - fclose($f); - return false; - } - fread($f, 4); - $channels = ($ct == 2 ? 3 : 1); - $parms = '/DecodeParms << /Predictor 15 /Colors '.$channels.' /BitsPerComponent '.$bpc.' /Columns '.$w.' >>'; - //Scan chunks looking for palette, transparency and image data - $pal = ''; - $trns = ''; - $data = ''; - $icc = false; - do { - $n = TCPDF_STATIC::_freadint($f); - $type = fread($f, 4); - if ($type == 'PLTE') { - // read palette - $pal = TCPDF_STATIC::rfread($f, $n); - fread($f, 4); - } elseif ($type == 'tRNS') { - // read transparency info - $t = TCPDF_STATIC::rfread($f, $n); - if ($ct == 0) { // DeviceGray - $trns = array(ord($t[1])); - } elseif ($ct == 2) { // DeviceRGB - $trns = array(ord($t[1]), ord($t[3]), ord($t[5])); - } else { // Indexed - if ($n > 0) { - $trns = array(); - for ($i = 0; $i < $n; ++ $i) { - $trns[] = ord($t{$i}); - } - } - } - fread($f, 4); - } elseif ($type == 'IDAT') { - // read image data block - $data .= TCPDF_STATIC::rfread($f, $n); - fread($f, 4); - } elseif ($type == 'iCCP') { - // skip profile name - $len = 0; - while ((ord(fread($f, 1)) != 0) AND ($len < 80)) { - ++$len; - } - // get compression method - if (ord(fread($f, 1)) != 0) { - // Unknown filter method - fclose($f); - return false; - } - // read ICC Color Profile - $icc = TCPDF_STATIC::rfread($f, ($n - $len - 2)); - // decompress profile - $icc = gzuncompress($icc); - fread($f, 4); - } elseif ($type == 'IEND') { - break; - } else { - TCPDF_STATIC::rfread($f, $n + 4); - } - } while ($n); - if (($colspace == 'Indexed') AND (empty($pal))) { - // Missing palette - fclose($f); - return false; - } - fclose($f); - return array('w' => $w, 'h' => $h, 'ch' => $channels, 'icc' => $icc, 'cs' => $colspace, 'bpc' => $bpc, 'f' => 'FlateDecode', 'parms' => $parms, 'pal' => $pal, 'trns' => $trns, 'data' => $data); - } - -} // END OF TCPDF_IMAGES CLASS - -//============================================================+ -// END OF FILE -//============================================================+ diff --git a/libraries/tcpdf/include/tcpdf_static.php b/libraries/tcpdf/include/tcpdf_static.php deleted file mode 100644 index 4ab18b6c4d..0000000000 --- a/libraries/tcpdf/include/tcpdf_static.php +++ /dev/null @@ -1,2528 +0,0 @@ -. -// -// See LICENSE.TXT file for more information. -// ------------------------------------------------------------------- -// -// Description : -// Static methods used by the TCPDF class. -// -//============================================================+ - -/** - * @file - * This is a PHP class that contains static methods for the TCPDF class.
- * @package com.tecnick.tcpdf - * @author Nicola Asuni - * @version 1.1.2 - */ - -/** - * @class TCPDF_STATIC - * Static methods used by the TCPDF class. - * @package com.tecnick.tcpdf - * @brief PHP class for generating PDF documents without requiring external extensions. - * @version 1.1.1 - * @author Nicola Asuni - info@tecnick.com - */ -class TCPDF_STATIC { - - /** - * Current TCPDF version. - * @private static - */ - private static $tcpdf_version = '6.2.9'; - - /** - * String alias for total number of pages. - * @public static - */ - public static $alias_tot_pages = '{:ptp:}'; - - /** - * String alias for page number. - * @public static - */ - public static $alias_num_page = '{:pnp:}'; - - /** - * String alias for total number of pages in a single group. - * @public static - */ - public static $alias_group_tot_pages = '{:ptg:}'; - - /** - * String alias for group page number. - * @public static - */ - public static $alias_group_num_page = '{:png:}'; - - /** - * String alias for right shift compensation used to correctly align page numbers on the right. - * @public static - */ - public static $alias_right_shift = '{rsc:'; - - /** - * Encryption padding string. - * @public static - */ - public static $enc_padding = "\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A"; - - /** - * ByteRange placemark used during digital signature process. - * @since 4.6.028 (2009-08-25) - * @public static - */ - public static $byterange_string = '/ByteRange[0 ********** ********** **********]'; - - /** - * Array page boxes names - * @public static - */ - public static $pageboxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox'); - - /** - * Array of page formats - * measures are calculated in this way: (inches * 72) or (millimeters * 72 / 25.4) - * @public static - */ - public static $page_formats = array( - // ISO 216 A Series + 2 SIS 014711 extensions - 'A0' => array( 2383.937, 3370.394), // = ( 841 x 1189 ) mm = ( 33.11 x 46.81 ) in - 'A1' => array( 1683.780, 2383.937), // = ( 594 x 841 ) mm = ( 23.39 x 33.11 ) in - 'A2' => array( 1190.551, 1683.780), // = ( 420 x 594 ) mm = ( 16.54 x 23.39 ) in - 'A3' => array( 841.890, 1190.551), // = ( 297 x 420 ) mm = ( 11.69 x 16.54 ) in - 'A4' => array( 595.276, 841.890), // = ( 210 x 297 ) mm = ( 8.27 x 11.69 ) in - 'A5' => array( 419.528, 595.276), // = ( 148 x 210 ) mm = ( 5.83 x 8.27 ) in - 'A6' => array( 297.638, 419.528), // = ( 105 x 148 ) mm = ( 4.13 x 5.83 ) in - 'A7' => array( 209.764, 297.638), // = ( 74 x 105 ) mm = ( 2.91 x 4.13 ) in - 'A8' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in - 'A9' => array( 104.882, 147.402), // = ( 37 x 52 ) mm = ( 1.46 x 2.05 ) in - 'A10' => array( 73.701, 104.882), // = ( 26 x 37 ) mm = ( 1.02 x 1.46 ) in - 'A11' => array( 51.024, 73.701), // = ( 18 x 26 ) mm = ( 0.71 x 1.02 ) in - 'A12' => array( 36.850, 51.024), // = ( 13 x 18 ) mm = ( 0.51 x 0.71 ) in - // ISO 216 B Series + 2 SIS 014711 extensions - 'B0' => array( 2834.646, 4008.189), // = ( 1000 x 1414 ) mm = ( 39.37 x 55.67 ) in - 'B1' => array( 2004.094, 2834.646), // = ( 707 x 1000 ) mm = ( 27.83 x 39.37 ) in - 'B2' => array( 1417.323, 2004.094), // = ( 500 x 707 ) mm = ( 19.69 x 27.83 ) in - 'B3' => array( 1000.630, 1417.323), // = ( 353 x 500 ) mm = ( 13.90 x 19.69 ) in - 'B4' => array( 708.661, 1000.630), // = ( 250 x 353 ) mm = ( 9.84 x 13.90 ) in - 'B5' => array( 498.898, 708.661), // = ( 176 x 250 ) mm = ( 6.93 x 9.84 ) in - 'B6' => array( 354.331, 498.898), // = ( 125 x 176 ) mm = ( 4.92 x 6.93 ) in - 'B7' => array( 249.449, 354.331), // = ( 88 x 125 ) mm = ( 3.46 x 4.92 ) in - 'B8' => array( 175.748, 249.449), // = ( 62 x 88 ) mm = ( 2.44 x 3.46 ) in - 'B9' => array( 124.724, 175.748), // = ( 44 x 62 ) mm = ( 1.73 x 2.44 ) in - 'B10' => array( 87.874, 124.724), // = ( 31 x 44 ) mm = ( 1.22 x 1.73 ) in - 'B11' => array( 62.362, 87.874), // = ( 22 x 31 ) mm = ( 0.87 x 1.22 ) in - 'B12' => array( 42.520, 62.362), // = ( 15 x 22 ) mm = ( 0.59 x 0.87 ) in - // ISO 216 C Series + 2 SIS 014711 extensions + 5 EXTENSION - 'C0' => array( 2599.370, 3676.535), // = ( 917 x 1297 ) mm = ( 36.10 x 51.06 ) in - 'C1' => array( 1836.850, 2599.370), // = ( 648 x 917 ) mm = ( 25.51 x 36.10 ) in - 'C2' => array( 1298.268, 1836.850), // = ( 458 x 648 ) mm = ( 18.03 x 25.51 ) in - 'C3' => array( 918.425, 1298.268), // = ( 324 x 458 ) mm = ( 12.76 x 18.03 ) in - 'C4' => array( 649.134, 918.425), // = ( 229 x 324 ) mm = ( 9.02 x 12.76 ) in - 'C5' => array( 459.213, 649.134), // = ( 162 x 229 ) mm = ( 6.38 x 9.02 ) in - 'C6' => array( 323.150, 459.213), // = ( 114 x 162 ) mm = ( 4.49 x 6.38 ) in - 'C7' => array( 229.606, 323.150), // = ( 81 x 114 ) mm = ( 3.19 x 4.49 ) in - 'C8' => array( 161.575, 229.606), // = ( 57 x 81 ) mm = ( 2.24 x 3.19 ) in - 'C9' => array( 113.386, 161.575), // = ( 40 x 57 ) mm = ( 1.57 x 2.24 ) in - 'C10' => array( 79.370, 113.386), // = ( 28 x 40 ) mm = ( 1.10 x 1.57 ) in - 'C11' => array( 56.693, 79.370), // = ( 20 x 28 ) mm = ( 0.79 x 1.10 ) in - 'C12' => array( 39.685, 56.693), // = ( 14 x 20 ) mm = ( 0.55 x 0.79 ) in - 'C76' => array( 229.606, 459.213), // = ( 81 x 162 ) mm = ( 3.19 x 6.38 ) in - 'DL' => array( 311.811, 623.622), // = ( 110 x 220 ) mm = ( 4.33 x 8.66 ) in - 'DLE' => array( 323.150, 637.795), // = ( 114 x 225 ) mm = ( 4.49 x 8.86 ) in - 'DLX' => array( 340.158, 666.142), // = ( 120 x 235 ) mm = ( 4.72 x 9.25 ) in - 'DLP' => array( 280.630, 595.276), // = ( 99 x 210 ) mm = ( 3.90 x 8.27 ) in (1/3 A4) - // SIS 014711 E Series - 'E0' => array( 2491.654, 3517.795), // = ( 879 x 1241 ) mm = ( 34.61 x 48.86 ) in - 'E1' => array( 1757.480, 2491.654), // = ( 620 x 879 ) mm = ( 24.41 x 34.61 ) in - 'E2' => array( 1247.244, 1757.480), // = ( 440 x 620 ) mm = ( 17.32 x 24.41 ) in - 'E3' => array( 878.740, 1247.244), // = ( 310 x 440 ) mm = ( 12.20 x 17.32 ) in - 'E4' => array( 623.622, 878.740), // = ( 220 x 310 ) mm = ( 8.66 x 12.20 ) in - 'E5' => array( 439.370, 623.622), // = ( 155 x 220 ) mm = ( 6.10 x 8.66 ) in - 'E6' => array( 311.811, 439.370), // = ( 110 x 155 ) mm = ( 4.33 x 6.10 ) in - 'E7' => array( 221.102, 311.811), // = ( 78 x 110 ) mm = ( 3.07 x 4.33 ) in - 'E8' => array( 155.906, 221.102), // = ( 55 x 78 ) mm = ( 2.17 x 3.07 ) in - 'E9' => array( 110.551, 155.906), // = ( 39 x 55 ) mm = ( 1.54 x 2.17 ) in - 'E10' => array( 76.535, 110.551), // = ( 27 x 39 ) mm = ( 1.06 x 1.54 ) in - 'E11' => array( 53.858, 76.535), // = ( 19 x 27 ) mm = ( 0.75 x 1.06 ) in - 'E12' => array( 36.850, 53.858), // = ( 13 x 19 ) mm = ( 0.51 x 0.75 ) in - // SIS 014711 G Series - 'G0' => array( 2715.591, 3838.110), // = ( 958 x 1354 ) mm = ( 37.72 x 53.31 ) in - 'G1' => array( 1919.055, 2715.591), // = ( 677 x 958 ) mm = ( 26.65 x 37.72 ) in - 'G2' => array( 1357.795, 1919.055), // = ( 479 x 677 ) mm = ( 18.86 x 26.65 ) in - 'G3' => array( 958.110, 1357.795), // = ( 338 x 479 ) mm = ( 13.31 x 18.86 ) in - 'G4' => array( 677.480, 958.110), // = ( 239 x 338 ) mm = ( 9.41 x 13.31 ) in - 'G5' => array( 479.055, 677.480), // = ( 169 x 239 ) mm = ( 6.65 x 9.41 ) in - 'G6' => array( 337.323, 479.055), // = ( 119 x 169 ) mm = ( 4.69 x 6.65 ) in - 'G7' => array( 238.110, 337.323), // = ( 84 x 119 ) mm = ( 3.31 x 4.69 ) in - 'G8' => array( 167.244, 238.110), // = ( 59 x 84 ) mm = ( 2.32 x 3.31 ) in - 'G9' => array( 119.055, 167.244), // = ( 42 x 59 ) mm = ( 1.65 x 2.32 ) in - 'G10' => array( 82.205, 119.055), // = ( 29 x 42 ) mm = ( 1.14 x 1.65 ) in - 'G11' => array( 59.528, 82.205), // = ( 21 x 29 ) mm = ( 0.83 x 1.14 ) in - 'G12' => array( 39.685, 59.528), // = ( 14 x 21 ) mm = ( 0.55 x 0.83 ) in - // ISO Press - 'RA0' => array( 2437.795, 3458.268), // = ( 860 x 1220 ) mm = ( 33.86 x 48.03 ) in - 'RA1' => array( 1729.134, 2437.795), // = ( 610 x 860 ) mm = ( 24.02 x 33.86 ) in - 'RA2' => array( 1218.898, 1729.134), // = ( 430 x 610 ) mm = ( 16.93 x 24.02 ) in - 'RA3' => array( 864.567, 1218.898), // = ( 305 x 430 ) mm = ( 12.01 x 16.93 ) in - 'RA4' => array( 609.449, 864.567), // = ( 215 x 305 ) mm = ( 8.46 x 12.01 ) in - 'SRA0' => array( 2551.181, 3628.346), // = ( 900 x 1280 ) mm = ( 35.43 x 50.39 ) in - 'SRA1' => array( 1814.173, 2551.181), // = ( 640 x 900 ) mm = ( 25.20 x 35.43 ) in - 'SRA2' => array( 1275.591, 1814.173), // = ( 450 x 640 ) mm = ( 17.72 x 25.20 ) in - 'SRA3' => array( 907.087, 1275.591), // = ( 320 x 450 ) mm = ( 12.60 x 17.72 ) in - 'SRA4' => array( 637.795, 907.087), // = ( 225 x 320 ) mm = ( 8.86 x 12.60 ) in - // German DIN 476 - '4A0' => array( 4767.874, 6740.787), // = ( 1682 x 2378 ) mm = ( 66.22 x 93.62 ) in - '2A0' => array( 3370.394, 4767.874), // = ( 1189 x 1682 ) mm = ( 46.81 x 66.22 ) in - // Variations on the ISO Standard - 'A2_EXTRA' => array( 1261.417, 1754.646), // = ( 445 x 619 ) mm = ( 17.52 x 24.37 ) in - 'A3+' => array( 932.598, 1369.134), // = ( 329 x 483 ) mm = ( 12.95 x 19.02 ) in - 'A3_EXTRA' => array( 912.756, 1261.417), // = ( 322 x 445 ) mm = ( 12.68 x 17.52 ) in - 'A3_SUPER' => array( 864.567, 1440.000), // = ( 305 x 508 ) mm = ( 12.01 x 20.00 ) in - 'SUPER_A3' => array( 864.567, 1380.472), // = ( 305 x 487 ) mm = ( 12.01 x 19.17 ) in - 'A4_EXTRA' => array( 666.142, 912.756), // = ( 235 x 322 ) mm = ( 9.25 x 12.68 ) in - 'A4_SUPER' => array( 649.134, 912.756), // = ( 229 x 322 ) mm = ( 9.02 x 12.68 ) in - 'SUPER_A4' => array( 643.465, 1009.134), // = ( 227 x 356 ) mm = ( 8.94 x 14.02 ) in - 'A4_LONG' => array( 595.276, 986.457), // = ( 210 x 348 ) mm = ( 8.27 x 13.70 ) in - 'F4' => array( 595.276, 935.433), // = ( 210 x 330 ) mm = ( 8.27 x 12.99 ) in - 'SO_B5_EXTRA' => array( 572.598, 782.362), // = ( 202 x 276 ) mm = ( 7.95 x 10.87 ) in - 'A5_EXTRA' => array( 490.394, 666.142), // = ( 173 x 235 ) mm = ( 6.81 x 9.25 ) in - // ANSI Series - 'ANSI_E' => array( 2448.000, 3168.000), // = ( 864 x 1118 ) mm = ( 34.00 x 44.00 ) in - 'ANSI_D' => array( 1584.000, 2448.000), // = ( 559 x 864 ) mm = ( 22.00 x 34.00 ) in - 'ANSI_C' => array( 1224.000, 1584.000), // = ( 432 x 559 ) mm = ( 17.00 x 22.00 ) in - 'ANSI_B' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'ANSI_A' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - // Traditional 'Loose' North American Paper Sizes - 'USLEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in - 'LEDGER' => array( 1224.000, 792.000), // = ( 432 x 279 ) mm = ( 17.00 x 11.00 ) in - 'ORGANIZERK' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'BIBLE' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'USTABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'TABLOID' => array( 792.000, 1224.000), // = ( 279 x 432 ) mm = ( 11.00 x 17.00 ) in - 'ORGANIZERM' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'USLETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'LETTER' => array( 612.000, 792.000), // = ( 216 x 279 ) mm = ( 8.50 x 11.00 ) in - 'USLEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in - 'LEGAL' => array( 612.000, 1008.000), // = ( 216 x 356 ) mm = ( 8.50 x 14.00 ) in - 'GOVERNMENTLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in - 'GLETTER' => array( 576.000, 756.000), // = ( 203 x 267 ) mm = ( 8.00 x 10.50 ) in - 'JUNIORLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in - 'JLEGAL' => array( 576.000, 360.000), // = ( 203 x 127 ) mm = ( 8.00 x 5.00 ) in - // Other North American Paper Sizes - 'QUADDEMY' => array( 2520.000, 3240.000), // = ( 889 x 1143 ) mm = ( 35.00 x 45.00 ) in - 'SUPER_B' => array( 936.000, 1368.000), // = ( 330 x 483 ) mm = ( 13.00 x 19.00 ) in - 'QUARTO' => array( 648.000, 792.000), // = ( 229 x 279 ) mm = ( 9.00 x 11.00 ) in - 'GOVERNMENTLEGAL' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in - 'FOLIO' => array( 612.000, 936.000), // = ( 216 x 330 ) mm = ( 8.50 x 13.00 ) in - 'MONARCH' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in - 'EXECUTIVE' => array( 522.000, 756.000), // = ( 184 x 267 ) mm = ( 7.25 x 10.50 ) in - 'ORGANIZERL' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'STATEMENT' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'MEMO' => array( 396.000, 612.000), // = ( 140 x 216 ) mm = ( 5.50 x 8.50 ) in - 'FOOLSCAP' => array( 595.440, 936.000), // = ( 210 x 330 ) mm = ( 8.27 x 13.00 ) in - 'COMPACT' => array( 306.000, 486.000), // = ( 108 x 171 ) mm = ( 4.25 x 6.75 ) in - 'ORGANIZERJ' => array( 198.000, 360.000), // = ( 70 x 127 ) mm = ( 2.75 x 5.00 ) in - // Canadian standard CAN 2-9.60M - 'P1' => array( 1587.402, 2437.795), // = ( 560 x 860 ) mm = ( 22.05 x 33.86 ) in - 'P2' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in - 'P3' => array( 793.701, 1218.898), // = ( 280 x 430 ) mm = ( 11.02 x 16.93 ) in - 'P4' => array( 609.449, 793.701), // = ( 215 x 280 ) mm = ( 8.46 x 11.02 ) in - 'P5' => array( 396.850, 609.449), // = ( 140 x 215 ) mm = ( 5.51 x 8.46 ) in - 'P6' => array( 303.307, 396.850), // = ( 107 x 140 ) mm = ( 4.21 x 5.51 ) in - // North American Architectural Sizes - 'ARCH_E' => array( 2592.000, 3456.000), // = ( 914 x 1219 ) mm = ( 36.00 x 48.00 ) in - 'ARCH_E1' => array( 2160.000, 3024.000), // = ( 762 x 1067 ) mm = ( 30.00 x 42.00 ) in - 'ARCH_D' => array( 1728.000, 2592.000), // = ( 610 x 914 ) mm = ( 24.00 x 36.00 ) in - 'BROADSHEET' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in - 'ARCH_C' => array( 1296.000, 1728.000), // = ( 457 x 610 ) mm = ( 18.00 x 24.00 ) in - 'ARCH_B' => array( 864.000, 1296.000), // = ( 305 x 457 ) mm = ( 12.00 x 18.00 ) in - 'ARCH_A' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in - // -- North American Envelope Sizes - // - Announcement Envelopes - 'ANNENV_A2' => array( 314.640, 414.000), // = ( 111 x 146 ) mm = ( 4.37 x 5.75 ) in - 'ANNENV_A6' => array( 342.000, 468.000), // = ( 121 x 165 ) mm = ( 4.75 x 6.50 ) in - 'ANNENV_A7' => array( 378.000, 522.000), // = ( 133 x 184 ) mm = ( 5.25 x 7.25 ) in - 'ANNENV_A8' => array( 396.000, 584.640), // = ( 140 x 206 ) mm = ( 5.50 x 8.12 ) in - 'ANNENV_A10' => array( 450.000, 692.640), // = ( 159 x 244 ) mm = ( 6.25 x 9.62 ) in - 'ANNENV_SLIM' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in - // - Commercial Envelopes - 'COMMENV_N6_1/4' => array( 252.000, 432.000), // = ( 89 x 152 ) mm = ( 3.50 x 6.00 ) in - 'COMMENV_N6_3/4' => array( 260.640, 468.000), // = ( 92 x 165 ) mm = ( 3.62 x 6.50 ) in - 'COMMENV_N8' => array( 278.640, 540.000), // = ( 98 x 191 ) mm = ( 3.87 x 7.50 ) in - 'COMMENV_N9' => array( 278.640, 638.640), // = ( 98 x 225 ) mm = ( 3.87 x 8.87 ) in - 'COMMENV_N10' => array( 296.640, 684.000), // = ( 105 x 241 ) mm = ( 4.12 x 9.50 ) in - 'COMMENV_N11' => array( 324.000, 746.640), // = ( 114 x 263 ) mm = ( 4.50 x 10.37 ) in - 'COMMENV_N12' => array( 342.000, 792.000), // = ( 121 x 279 ) mm = ( 4.75 x 11.00 ) in - 'COMMENV_N14' => array( 360.000, 828.000), // = ( 127 x 292 ) mm = ( 5.00 x 11.50 ) in - // - Catalogue Envelopes - 'CATENV_N1' => array( 432.000, 648.000), // = ( 152 x 229 ) mm = ( 6.00 x 9.00 ) in - 'CATENV_N1_3/4' => array( 468.000, 684.000), // = ( 165 x 241 ) mm = ( 6.50 x 9.50 ) in - 'CATENV_N2' => array( 468.000, 720.000), // = ( 165 x 254 ) mm = ( 6.50 x 10.00 ) in - 'CATENV_N3' => array( 504.000, 720.000), // = ( 178 x 254 ) mm = ( 7.00 x 10.00 ) in - 'CATENV_N6' => array( 540.000, 756.000), // = ( 191 x 267 ) mm = ( 7.50 x 10.50 ) in - 'CATENV_N7' => array( 576.000, 792.000), // = ( 203 x 279 ) mm = ( 8.00 x 11.00 ) in - 'CATENV_N8' => array( 594.000, 810.000), // = ( 210 x 286 ) mm = ( 8.25 x 11.25 ) in - 'CATENV_N9_1/2' => array( 612.000, 756.000), // = ( 216 x 267 ) mm = ( 8.50 x 10.50 ) in - 'CATENV_N9_3/4' => array( 630.000, 810.000), // = ( 222 x 286 ) mm = ( 8.75 x 11.25 ) in - 'CATENV_N10_1/2' => array( 648.000, 864.000), // = ( 229 x 305 ) mm = ( 9.00 x 12.00 ) in - 'CATENV_N12_1/2' => array( 684.000, 900.000), // = ( 241 x 318 ) mm = ( 9.50 x 12.50 ) in - 'CATENV_N13_1/2' => array( 720.000, 936.000), // = ( 254 x 330 ) mm = ( 10.00 x 13.00 ) in - 'CATENV_N14_1/4' => array( 810.000, 882.000), // = ( 286 x 311 ) mm = ( 11.25 x 12.25 ) in - 'CATENV_N14_1/2' => array( 828.000, 1044.000), // = ( 292 x 368 ) mm = ( 11.50 x 14.50 ) in - // Japanese (JIS P 0138-61) Standard B-Series - 'JIS_B0' => array( 2919.685, 4127.244), // = ( 1030 x 1456 ) mm = ( 40.55 x 57.32 ) in - 'JIS_B1' => array( 2063.622, 2919.685), // = ( 728 x 1030 ) mm = ( 28.66 x 40.55 ) in - 'JIS_B2' => array( 1459.843, 2063.622), // = ( 515 x 728 ) mm = ( 20.28 x 28.66 ) in - 'JIS_B3' => array( 1031.811, 1459.843), // = ( 364 x 515 ) mm = ( 14.33 x 20.28 ) in - 'JIS_B4' => array( 728.504, 1031.811), // = ( 257 x 364 ) mm = ( 10.12 x 14.33 ) in - 'JIS_B5' => array( 515.906, 728.504), // = ( 182 x 257 ) mm = ( 7.17 x 10.12 ) in - 'JIS_B6' => array( 362.835, 515.906), // = ( 128 x 182 ) mm = ( 5.04 x 7.17 ) in - 'JIS_B7' => array( 257.953, 362.835), // = ( 91 x 128 ) mm = ( 3.58 x 5.04 ) in - 'JIS_B8' => array( 181.417, 257.953), // = ( 64 x 91 ) mm = ( 2.52 x 3.58 ) in - 'JIS_B9' => array( 127.559, 181.417), // = ( 45 x 64 ) mm = ( 1.77 x 2.52 ) in - 'JIS_B10' => array( 90.709, 127.559), // = ( 32 x 45 ) mm = ( 1.26 x 1.77 ) in - 'JIS_B11' => array( 62.362, 90.709), // = ( 22 x 32 ) mm = ( 0.87 x 1.26 ) in - 'JIS_B12' => array( 45.354, 62.362), // = ( 16 x 22 ) mm = ( 0.63 x 0.87 ) in - // PA Series - 'PA0' => array( 2381.102, 3174.803), // = ( 840 x 1120 ) mm = ( 33.07 x 44.09 ) in - 'PA1' => array( 1587.402, 2381.102), // = ( 560 x 840 ) mm = ( 22.05 x 33.07 ) in - 'PA2' => array( 1190.551, 1587.402), // = ( 420 x 560 ) mm = ( 16.54 x 22.05 ) in - 'PA3' => array( 793.701, 1190.551), // = ( 280 x 420 ) mm = ( 11.02 x 16.54 ) in - 'PA4' => array( 595.276, 793.701), // = ( 210 x 280 ) mm = ( 8.27 x 11.02 ) in - 'PA5' => array( 396.850, 595.276), // = ( 140 x 210 ) mm = ( 5.51 x 8.27 ) in - 'PA6' => array( 297.638, 396.850), // = ( 105 x 140 ) mm = ( 4.13 x 5.51 ) in - 'PA7' => array( 198.425, 297.638), // = ( 70 x 105 ) mm = ( 2.76 x 4.13 ) in - 'PA8' => array( 147.402, 198.425), // = ( 52 x 70 ) mm = ( 2.05 x 2.76 ) in - 'PA9' => array( 99.213, 147.402), // = ( 35 x 52 ) mm = ( 1.38 x 2.05 ) in - 'PA10' => array( 73.701, 99.213), // = ( 26 x 35 ) mm = ( 1.02 x 1.38 ) in - // Standard Photographic Print Sizes - 'PASSPORT_PHOTO' => array( 99.213, 127.559), // = ( 35 x 45 ) mm = ( 1.38 x 1.77 ) in - 'E' => array( 233.858, 340.157), // = ( 82 x 120 ) mm = ( 3.25 x 4.72 ) in - 'L' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in - '3R' => array( 252.283, 360.000), // = ( 89 x 127 ) mm = ( 3.50 x 5.00 ) in - 'KG' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in - '4R' => array( 289.134, 430.866), // = ( 102 x 152 ) mm = ( 4.02 x 5.98 ) in - '4D' => array( 340.157, 430.866), // = ( 120 x 152 ) mm = ( 4.72 x 5.98 ) in - '2L' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in - '5R' => array( 360.000, 504.567), // = ( 127 x 178 ) mm = ( 5.00 x 7.01 ) in - '8P' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in - '6R' => array( 430.866, 575.433), // = ( 152 x 203 ) mm = ( 5.98 x 7.99 ) in - '6P' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in - '8R' => array( 575.433, 720.000), // = ( 203 x 254 ) mm = ( 7.99 x 10.00 ) in - '6PW' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in - 'S8R' => array( 575.433, 864.567), // = ( 203 x 305 ) mm = ( 7.99 x 12.01 ) in - '4P' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in - '10R' => array( 720.000, 864.567), // = ( 254 x 305 ) mm = ( 10.00 x 12.01 ) in - '4PW' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in - 'S10R' => array( 720.000, 1080.000), // = ( 254 x 381 ) mm = ( 10.00 x 15.00 ) in - '11R' => array( 790.866, 1009.134), // = ( 279 x 356 ) mm = ( 10.98 x 14.02 ) in - 'S11R' => array( 790.866, 1224.567), // = ( 279 x 432 ) mm = ( 10.98 x 17.01 ) in - '12R' => array( 864.567, 1080.000), // = ( 305 x 381 ) mm = ( 12.01 x 15.00 ) in - 'S12R' => array( 864.567, 1292.598), // = ( 305 x 456 ) mm = ( 12.01 x 17.95 ) in - // Common Newspaper Sizes - 'NEWSPAPER_BROADSHEET' => array( 2125.984, 1700.787), // = ( 750 x 600 ) mm = ( 29.53 x 23.62 ) in - 'NEWSPAPER_BERLINER' => array( 1332.283, 892.913), // = ( 470 x 315 ) mm = ( 18.50 x 12.40 ) in - 'NEWSPAPER_TABLOID' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in - 'NEWSPAPER_COMPACT' => array( 1218.898, 793.701), // = ( 430 x 280 ) mm = ( 16.93 x 11.02 ) in - // Business Cards - 'CREDIT_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD_ISO7810' => array( 153.014, 242.646), // = ( 54 x 86 ) mm = ( 2.13 x 3.37 ) in - 'BUSINESS_CARD_ISO216' => array( 147.402, 209.764), // = ( 52 x 74 ) mm = ( 2.05 x 2.91 ) in - 'BUSINESS_CARD_IT' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_UK' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_FR' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_DE' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_ES' => array( 155.906, 240.945), // = ( 55 x 85 ) mm = ( 2.17 x 3.35 ) in - 'BUSINESS_CARD_CA' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in - 'BUSINESS_CARD_US' => array( 144.567, 252.283), // = ( 51 x 89 ) mm = ( 2.01 x 3.50 ) in - 'BUSINESS_CARD_JP' => array( 155.906, 257.953), // = ( 55 x 91 ) mm = ( 2.17 x 3.58 ) in - 'BUSINESS_CARD_HK' => array( 153.071, 255.118), // = ( 54 x 90 ) mm = ( 2.13 x 3.54 ) in - 'BUSINESS_CARD_AU' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_DK' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_SE' => array( 155.906, 255.118), // = ( 55 x 90 ) mm = ( 2.17 x 3.54 ) in - 'BUSINESS_CARD_RU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_CZ' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_FI' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_HU' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - 'BUSINESS_CARD_IL' => array( 141.732, 255.118), // = ( 50 x 90 ) mm = ( 1.97 x 3.54 ) in - // Billboards - '4SHEET' => array( 2880.000, 4320.000), // = ( 1016 x 1524 ) mm = ( 40.00 x 60.00 ) in - '6SHEET' => array( 3401.575, 5102.362), // = ( 1200 x 1800 ) mm = ( 47.24 x 70.87 ) in - '12SHEET' => array( 8640.000, 4320.000), // = ( 3048 x 1524 ) mm = (120.00 x 60.00 ) in - '16SHEET' => array( 5760.000, 8640.000), // = ( 2032 x 3048 ) mm = ( 80.00 x 120.00) in - '32SHEET' => array(11520.000, 8640.000), // = ( 4064 x 3048 ) mm = (160.00 x 120.00) in - '48SHEET' => array(17280.000, 8640.000), // = ( 6096 x 3048 ) mm = (240.00 x 120.00) in - '64SHEET' => array(23040.000, 8640.000), // = ( 8128 x 3048 ) mm = (320.00 x 120.00) in - '96SHEET' => array(34560.000, 8640.000), // = (12192 x 3048 ) mm = (480.00 x 120.00) in - // -- Old European Sizes - // - Old Imperial English Sizes - 'EN_EMPEROR' => array( 3456.000, 5184.000), // = ( 1219 x 1829 ) mm = ( 48.00 x 72.00 ) in - 'EN_ANTIQUARIAN' => array( 2232.000, 3816.000), // = ( 787 x 1346 ) mm = ( 31.00 x 53.00 ) in - 'EN_GRAND_EAGLE' => array( 2070.000, 3024.000), // = ( 730 x 1067 ) mm = ( 28.75 x 42.00 ) in - 'EN_DOUBLE_ELEPHANT' => array( 1926.000, 2880.000), // = ( 679 x 1016 ) mm = ( 26.75 x 40.00 ) in - 'EN_ATLAS' => array( 1872.000, 2448.000), // = ( 660 x 864 ) mm = ( 26.00 x 34.00 ) in - 'EN_COLOMBIER' => array( 1692.000, 2484.000), // = ( 597 x 876 ) mm = ( 23.50 x 34.50 ) in - 'EN_ELEPHANT' => array( 1656.000, 2016.000), // = ( 584 x 711 ) mm = ( 23.00 x 28.00 ) in - 'EN_DOUBLE_DEMY' => array( 1620.000, 2556.000), // = ( 572 x 902 ) mm = ( 22.50 x 35.50 ) in - 'EN_IMPERIAL' => array( 1584.000, 2160.000), // = ( 559 x 762 ) mm = ( 22.00 x 30.00 ) in - 'EN_PRINCESS' => array( 1548.000, 2016.000), // = ( 546 x 711 ) mm = ( 21.50 x 28.00 ) in - 'EN_CARTRIDGE' => array( 1512.000, 1872.000), // = ( 533 x 660 ) mm = ( 21.00 x 26.00 ) in - 'EN_DOUBLE_LARGE_POST' => array( 1512.000, 2376.000), // = ( 533 x 838 ) mm = ( 21.00 x 33.00 ) in - 'EN_ROYAL' => array( 1440.000, 1800.000), // = ( 508 x 635 ) mm = ( 20.00 x 25.00 ) in - 'EN_SHEET' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in - 'EN_HALF_POST' => array( 1404.000, 1692.000), // = ( 495 x 597 ) mm = ( 19.50 x 23.50 ) in - 'EN_SUPER_ROYAL' => array( 1368.000, 1944.000), // = ( 483 x 686 ) mm = ( 19.00 x 27.00 ) in - 'EN_DOUBLE_POST' => array( 1368.000, 2196.000), // = ( 483 x 775 ) mm = ( 19.00 x 30.50 ) in - 'EN_MEDIUM' => array( 1260.000, 1656.000), // = ( 445 x 584 ) mm = ( 17.50 x 23.00 ) in - 'EN_DEMY' => array( 1260.000, 1620.000), // = ( 445 x 572 ) mm = ( 17.50 x 22.50 ) in - 'EN_LARGE_POST' => array( 1188.000, 1512.000), // = ( 419 x 533 ) mm = ( 16.50 x 21.00 ) in - 'EN_COPY_DRAUGHT' => array( 1152.000, 1440.000), // = ( 406 x 508 ) mm = ( 16.00 x 20.00 ) in - 'EN_POST' => array( 1116.000, 1386.000), // = ( 394 x 489 ) mm = ( 15.50 x 19.25 ) in - 'EN_CROWN' => array( 1080.000, 1440.000), // = ( 381 x 508 ) mm = ( 15.00 x 20.00 ) in - 'EN_PINCHED_POST' => array( 1062.000, 1332.000), // = ( 375 x 470 ) mm = ( 14.75 x 18.50 ) in - 'EN_BRIEF' => array( 972.000, 1152.000), // = ( 343 x 406 ) mm = ( 13.50 x 16.00 ) in - 'EN_FOOLSCAP' => array( 972.000, 1224.000), // = ( 343 x 432 ) mm = ( 13.50 x 17.00 ) in - 'EN_SMALL_FOOLSCAP' => array( 954.000, 1188.000), // = ( 337 x 419 ) mm = ( 13.25 x 16.50 ) in - 'EN_POTT' => array( 900.000, 1080.000), // = ( 318 x 381 ) mm = ( 12.50 x 15.00 ) in - // - Old Imperial Belgian Sizes - 'BE_GRAND_AIGLE' => array( 1984.252, 2948.031), // = ( 700 x 1040 ) mm = ( 27.56 x 40.94 ) in - 'BE_COLOMBIER' => array( 1757.480, 2409.449), // = ( 620 x 850 ) mm = ( 24.41 x 33.46 ) in - 'BE_DOUBLE_CARRE' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in - 'BE_ELEPHANT' => array( 1746.142, 2182.677), // = ( 616 x 770 ) mm = ( 24.25 x 30.31 ) in - 'BE_PETIT_AIGLE' => array( 1700.787, 2381.102), // = ( 600 x 840 ) mm = ( 23.62 x 33.07 ) in - 'BE_GRAND_JESUS' => array( 1559.055, 2069.291), // = ( 550 x 730 ) mm = ( 21.65 x 28.74 ) in - 'BE_JESUS' => array( 1530.709, 2069.291), // = ( 540 x 730 ) mm = ( 21.26 x 28.74 ) in - 'BE_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in - 'BE_GRAND_MEDIAN' => array( 1303.937, 1714.961), // = ( 460 x 605 ) mm = ( 18.11 x 23.82 ) in - 'BE_DOUBLE_POSTE' => array( 1233.071, 1601.575), // = ( 435 x 565 ) mm = ( 17.13 x 22.24 ) in - 'BE_COQUILLE' => array( 1218.898, 1587.402), // = ( 430 x 560 ) mm = ( 16.93 x 22.05 ) in - 'BE_PETIT_MEDIAN' => array( 1176.378, 1502.362), // = ( 415 x 530 ) mm = ( 16.34 x 20.87 ) in - 'BE_RUCHE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in - 'BE_PROPATRIA' => array( 977.953, 1218.898), // = ( 345 x 430 ) mm = ( 13.58 x 16.93 ) in - 'BE_LYS' => array( 898.583, 1125.354), // = ( 317 x 397 ) mm = ( 12.48 x 15.63 ) in - 'BE_POT' => array( 870.236, 1088.504), // = ( 307 x 384 ) mm = ( 12.09 x 15.12 ) in - 'BE_ROSETTE' => array( 765.354, 983.622), // = ( 270 x 347 ) mm = ( 10.63 x 13.66 ) in - // - Old Imperial French Sizes - 'FR_UNIVERS' => array( 2834.646, 3685.039), // = ( 1000 x 1300 ) mm = ( 39.37 x 51.18 ) in - 'FR_DOUBLE_COLOMBIER' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in - 'FR_GRANDE_MONDE' => array( 2551.181, 3571.654), // = ( 900 x 1260 ) mm = ( 35.43 x 49.61 ) in - 'FR_DOUBLE_SOLEIL' => array( 2267.717, 3401.575), // = ( 800 x 1200 ) mm = ( 31.50 x 47.24 ) in - 'FR_DOUBLE_JESUS' => array( 2154.331, 3174.803), // = ( 760 x 1120 ) mm = ( 29.92 x 44.09 ) in - 'FR_GRAND_AIGLE' => array( 2125.984, 3004.724), // = ( 750 x 1060 ) mm = ( 29.53 x 41.73 ) in - 'FR_PETIT_AIGLE' => array( 1984.252, 2664.567), // = ( 700 x 940 ) mm = ( 27.56 x 37.01 ) in - 'FR_DOUBLE_RAISIN' => array( 1842.520, 2834.646), // = ( 650 x 1000 ) mm = ( 25.59 x 39.37 ) in - 'FR_JOURNAL' => array( 1842.520, 2664.567), // = ( 650 x 940 ) mm = ( 25.59 x 37.01 ) in - 'FR_COLOMBIER_AFFICHE' => array( 1785.827, 2551.181), // = ( 630 x 900 ) mm = ( 24.80 x 35.43 ) in - 'FR_DOUBLE_CAVALIER' => array( 1757.480, 2607.874), // = ( 620 x 920 ) mm = ( 24.41 x 36.22 ) in - 'FR_CLOCHE' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in - 'FR_SOLEIL' => array( 1700.787, 2267.717), // = ( 600 x 800 ) mm = ( 23.62 x 31.50 ) in - 'FR_DOUBLE_CARRE' => array( 1587.402, 2551.181), // = ( 560 x 900 ) mm = ( 22.05 x 35.43 ) in - 'FR_DOUBLE_COQUILLE' => array( 1587.402, 2494.488), // = ( 560 x 880 ) mm = ( 22.05 x 34.65 ) in - 'FR_JESUS' => array( 1587.402, 2154.331), // = ( 560 x 760 ) mm = ( 22.05 x 29.92 ) in - 'FR_RAISIN' => array( 1417.323, 1842.520), // = ( 500 x 650 ) mm = ( 19.69 x 25.59 ) in - 'FR_CAVALIER' => array( 1303.937, 1757.480), // = ( 460 x 620 ) mm = ( 18.11 x 24.41 ) in - 'FR_DOUBLE_COURONNE' => array( 1303.937, 2040.945), // = ( 460 x 720 ) mm = ( 18.11 x 28.35 ) in - 'FR_CARRE' => array( 1275.591, 1587.402), // = ( 450 x 560 ) mm = ( 17.72 x 22.05 ) in - 'FR_COQUILLE' => array( 1247.244, 1587.402), // = ( 440 x 560 ) mm = ( 17.32 x 22.05 ) in - 'FR_DOUBLE_TELLIERE' => array( 1247.244, 1927.559), // = ( 440 x 680 ) mm = ( 17.32 x 26.77 ) in - 'FR_DOUBLE_CLOCHE' => array( 1133.858, 1700.787), // = ( 400 x 600 ) mm = ( 15.75 x 23.62 ) in - 'FR_DOUBLE_POT' => array( 1133.858, 1757.480), // = ( 400 x 620 ) mm = ( 15.75 x 24.41 ) in - 'FR_ECU' => array( 1133.858, 1474.016), // = ( 400 x 520 ) mm = ( 15.75 x 20.47 ) in - 'FR_COURONNE' => array( 1020.472, 1303.937), // = ( 360 x 460 ) mm = ( 14.17 x 18.11 ) in - 'FR_TELLIERE' => array( 963.780, 1247.244), // = ( 340 x 440 ) mm = ( 13.39 x 17.32 ) in - 'FR_POT' => array( 878.740, 1133.858), // = ( 310 x 400 ) mm = ( 12.20 x 15.75 ) in - ); - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /** - * Return the current TCPDF version. - * @return TCPDF version string - * @since 5.9.012 (2010-11-10) - * @public static - */ - public static function getTCPDFVersion() { - return self::$tcpdf_version; - } - - /** - * Return the current TCPDF producer. - * @return TCPDF producer string - * @since 6.0.000 (2013-03-16) - * @public static - */ - public static function getTCPDFProducer() { - return "\x54\x43\x50\x44\x46\x20".self::getTCPDFVersion()."\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67\x29"; - } - - /** - * Sets the current active configuration setting of magic_quotes_runtime (if the set_magic_quotes_runtime function exist) - * @param $mqr (boolean) FALSE for off, TRUE for on. - * @since 4.6.025 (2009-08-17) - * @public static - */ - public static function set_mqr($mqr) { - if (!defined('PHP_VERSION_ID')) { - $version = PHP_VERSION; - define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4])); - } - if (PHP_VERSION_ID < 50300) { - @set_magic_quotes_runtime($mqr); - } - } - - /** - * Gets the current active configuration setting of magic_quotes_runtime (if the get_magic_quotes_runtime function exist) - * @return Returns 0 if magic quotes runtime is off or get_magic_quotes_runtime doesn't exist, 1 otherwise. - * @since 4.6.025 (2009-08-17) - * @public static - */ - public static function get_mqr() { - if (!defined('PHP_VERSION_ID')) { - $version = PHP_VERSION; - define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4])); - } - if (PHP_VERSION_ID < 50300) { - return @get_magic_quotes_runtime(); - } - return 0; - } - - /** - * Get page dimensions from format name. - * @param $format (mixed) The format name @see self::$page_format