Gestionnaire de fichiers - Editer - /home/wwgoat/public_html/blog/fs.tar
Arrière
Siblings.php 0000644 00000010126 14720714326 0007035 0 ustar 00 <?php /** * Manages a POT or PO/MO pair and its on-disk dependants */ class Loco_fs_Siblings { /** * @var Loco_fs_File */ private $po; /** * @var Loco_fs_File|null */ private $mo; /** * @var Loco_fs_File|null */ private $php; /** * @var string */ private $td = ''; /** * @param Loco_fs_File $file Master file, either PO/MO or POT */ public function __construct( Loco_fs_File $file ){ $ext = $file->extension(); if( 'pot' === $ext ){ $this->po = $file; } else if( 'po' === $ext ){ $this->po = $file; $this->mo = $file->cloneExtension('mo'); } else if( 'mo' === $ext ){ $this->mo = $file; $this->po = $file->cloneExtension('po'); } else { throw new InvalidArgumentException('Unexpected file extension: '.$ext); } if( $this->mo && class_exists('WP_Translation_Controller') ){ $this->php = $this->mo->cloneExtension('l10n.php'); } } /** * Set text domain explicitly, required if unknown from PO/POT file name * @return void */ public function setDomain( $domain ){ $this->td = $domain ?: 'default'; } /** * Get all dependant files (including primary po) that actually exist on disk * @return Loco_fs_File[] */ public function expand(){ $siblings = []; // Source and binary pair foreach( [ $this->po, $this->mo, $this->php ] as $file ){ if( $file && $file->exists() ){ $siblings[] = $file; } } // PO revisions / backup files: $revs = new Loco_fs_Revisions( $this->po ); foreach( $revs->getPaths() as $path ){ $siblings[] = new Loco_fs_File( $path ); } // JSON exports, unless in POT mode: if( $this->mo ){ $siblings = array_merge($siblings,$this->getJsons($this->td)); } /*/ Note that the beta "performant-translations" plugin originally used .mo.php instead of .l10n.php if( $this->mo && class_exists('Performant_Translations') ){ $file = $this->mo->cloneExtension('mo.php'); if( $file->exists() ){ $siblings[] = $file; } }*/ return $siblings; } /** * @return Loco_fs_File */ public function getSource(){ return $this->po; } /** * @return Loco_fs_File|null */ public function getBinary(){ return $this->mo; } /** * @return Loco_fs_File|null */ public function getCache(){ return $this->php; } /** * @param string $prefix Prefix required in case not present in PO file name * @return Loco_fs_File[] */ public function getJsons( $prefix ){ $list = new Loco_fs_FileList; $name = $this->po->filename(); $finder = new Loco_fs_FileFinder( $this->po->dirname() ); // Handle problem that PO file has no text domain prefix if( $prefix && 'default' !== $prefix && preg_match('/^[a-z]{2,3}(?:_[a-z\\d_]+)?$/i',$name) ){ $name = $prefix.'-'.$name; } // match .json files with same name as .po, suffixed with md5 hash. // note that JSON files are localised, so won't be found if PO has no locale suffix. $regex = '/^'.preg_quote($name,'/').'-[0-9a-f]{32}$/'; /* @var Loco_fs_File $file */ foreach( $finder->group('json')->exportGroups() as $files ) { foreach( $files as $file ){ $match = $file->filename(); if( $match === $name || preg_match($regex,$match) ) { $list->add($file); } } } // append single json using our filter $path = apply_filters('loco_compile_single_json', '', $this->po->getPath() ); if( is_string($path) && '' !== $path && file_exists($path) ){ $list->add( new Loco_fs_File($path) ); } return $list->getArrayCopy(); } } DummyFile.php 0000644 00000007013 14720714326 0007157 0 ustar 00 <?php /** * Dummy file that just holds content in memory. * Use when you don't want to commit data to disk but you need to pass a typed file object */ class Loco_fs_DummyFile extends Loco_fs_File { /** * @var string */ private $contents = ''; /** * @var int */ private $mtime = 0; /** * @var int */ private $fmode = 0644; /** * @var int */ private $uid = 0; /** * @var int */ private $gid = 0; public function __construct($path){ parent::__construct($path); $this->mtime = time(); } /** * {@inheritdoc} */ public function exists(){ return false; } /** * {@inheritdoc} */ public function getContents(){ return $this->contents; } /** * {@inheritdoc} */ public function size(){ return strlen($this->contents); } /** * {@inheritdoc} */ public function putContents( $data ){ $this->contents = (string) $data; return $this; } /** * {@inheritdoc} */ public function modified(){ return $this->mtime; } /** * Allow forcing of modified stamp for testing purposes * @return Loco_fs_File */ public function touch( $modified ){ $this->mtime = (int) $modified; return $this; } /** * {@inheritdoc} */ public function mode(){ return $this->fmode; } /** * {@inheritdoc} */ public function chmod( $mode, $recursive = false ){ $this->fmode = (int) $mode; return $this; } /** * TODO implement in parent */ public function chown( $uid = null, $gid = null ){ if( is_int($uid) ){ $this->uid = $uid; } if( is_int($gid) ){ $this->gid = $gid; } return $this; } /** * {@inheritdoc} */ public function copy( $dest ){ $copy = new Loco_fs_DummyFile($dest); foreach( get_object_vars($this) as $prop => $value ){ $copy->$prop = $value; } return $copy; } /** * {@inheritdoc} */ public function uid(){ return $this->uid; } /** * {@inheritdoc} */ public function gid(){ return $this->gid; } /* * {@inheritdoc} public function writable(){ throw new Exception('Who did this?'); $mode = $this->mode(); // world writable if( $mode & 02 ){ return true; } // group writable if( ( $mode & 020 ) && $this->gid() === Loco_compat_PosixExtension::getgid() ){ return true; } // owner writable if( ( $mode & 0200 ) && $this->uid() === Loco_compat_PosixExtension::getuid() ){ return true; } // else locked: return false; }*/ /** * {@inheritdoc} */ public function creatable(){ return false; } /** * {@inheritDoc} */ public function md5(){ return md5( $this->getContents() ); } /** * {@inheritDoc} */ public function getWriteContext() { return new _LocoDummyFileWriter($this); } } /** * @internal */ class _LocoDummyFileWriter extends Loco_fs_FileWriter { /** * @inheritdoc */ public function writable(){ return true; } /** * @inheritdoc */ public function authorize(){ return $this; } } Locations.php 0000644 00000011735 14720714326 0007225 0 ustar 00 <?php /** * Handles various file locations */ class Loco_fs_Locations extends ArrayObject { /** * Singleton of WordPress root directory * @var Loco_fs_Locations */ private static $roots; /** * Singleton of wp-content directory * @var Loco_fs_Locations */ private static $conts; /** * Singleton of global languages directories * @var Loco_fs_Locations */ private static $langs; /** * Singleton of registered theme paths * @var Loco_fs_Locations */ private static $theme; /** * Singleton of registered plugin locations * @var Loco_fs_Locations */ private static $plugin; /** * Clear static caches */ public static function clear(){ self::$roots = null; self::$conts = null; self::$langs = null; self::$theme = null; self::$plugin = null; } /** * @return Loco_fs_Locations */ public static function getRoot(){ if( ! self::$roots ){ self::$roots = new Loco_fs_Locations( [ loco_constant('ABSPATH'), ] ); } return self::$roots; } /** * @return Loco_fs_Locations */ public static function getContent(){ if( ! self::$conts ){ self::$conts = new Loco_fs_Locations( [ loco_constant('WP_CONTENT_DIR'), // <- defined WP_CONTENT_DIR trailingslashit(ABSPATH).'wp-content', // <- default /wp-content ] ); } return self::$conts; } /** * @return Loco_fs_Locations */ public static function getGlobal(){ if( ! self::$langs ){ self::$langs = new Loco_fs_Locations( [ loco_constant('WP_LANG_DIR'), ] ); } return self::$langs; } /** * @return Loco_fs_Locations */ public static function getThemes(){ if( ! self::$theme ){ $roots = isset($GLOBALS['wp_theme_directories']) ? $GLOBALS['wp_theme_directories'] : []; if( ! $roots ){ $roots[] = trailingslashit( loco_constant('WP_CONTENT_DIR') ).'themes'; } self::$theme = new Loco_fs_Locations( $roots ); } return self::$theme; } /** * @return Loco_fs_Locations */ public static function getPlugins(){ if( ! self::$plugin ){ self::$plugin = new Loco_fs_Locations( [ loco_constant('WP_PLUGIN_DIR'), loco_constant('WPMU_PLUGIN_DIR'), ] ); } return self::$plugin; } /** * Create instance from list of locations */ public function __construct( array $paths ){ parent::__construct( [] ); foreach( $paths as $path ){ $this->add( $path ); } } /** * @param string $path normalized absolute path * @return Loco_fs_Locations */ public function add( $path ){ foreach( $this->expand($path) as $path ){ // path must have trailing slash, otherwise "/plugins/foobar" would match "/plugins/foo/" $this[$path] = strlen($path); } return $this; } /** * Check if a given path begins with any of the registered ones * @param string $path absolute path * @return bool whether path matched */ public function check( $path ){ foreach( $this->expand($path) as $path ){ foreach( $this as $prefix => $length ){ if( $prefix === $path || substr($path,0,$length) === $prefix ){ return true; } } } return false; } /** * Match location and return the relative subpath. * Note that exact match is returned as "." indicating self * @param string $path * @return string | null */ public function rel( $path ){ foreach( $this->expand($path) as $path ){ foreach( $this as $prefix => $length ){ if( $prefix === $path ){ return '.'; } if( substr($path,0,$length) === $prefix ){ return untrailingslashit( substr($path,$length) ); } } } return null; } /** * @param string $rel * @return string[] */ private function expand( $rel ){ if( '' === $rel ){ //Loco_error_AdminNotices::debug('Expanding empty path to empty array'); return []; } $path = Loco_fs_File::abs($rel); if( '' === $path ){ throw new InvalidArgumentException('Failed on abs('.var_export($rel,true).')'); } $paths = [ trailingslashit($path) ]; // add real path if differs $real = realpath($path); if( $real && $real !== $path ){ $paths[] = trailingslashit($real); } return $paths; } } LocaleDirectory.php 0000644 00000005650 14720714326 0010355 0 ustar 00 <?php /** * */ class Loco_fs_LocaleDirectory extends Loco_fs_Directory { /** * Get location identifier which signifies the type if translation storage. * * - "plugin": bundled inside a plugin (official/author) * - "theme": bundled inside a theme (official/author) * - "wplang": under the global languages directory and probably installed by auto-updates * - "custom": Loco protected directory * - "other": anywhere else * * @return string */ public function getTypeId(){ // paths must be compared with trailing slashes so "/foo" doesn't match "/foo-bar" $path = trailingslashit( $this->normalize() ); // anything under Loco's protected directory is our location for custom overrides $prefix = trailingslashit( loco_constant('LOCO_LANG_DIR') ); if( substr($path,0,strlen($prefix) ) === $prefix ){ return 'custom'; } // standard subdirectories of WP_LANG_DIR are under WordPress auto-update control $prefix = trailingslashit( loco_constant('WP_LANG_DIR') ); if( substr($path,0,strlen($prefix) ) === $prefix ){ if( $path === $prefix || $path === $prefix.'plugins/' || $path === $prefix.'themes/' ){ return 'wplang'; } } else { // anything under a registered theme directory is bundled $dirs = Loco_fs_Locations::getThemes(); if( $dirs->check($path) ){ return 'theme'; } // anything under a registered plugin directory is bundled $dirs = Loco_fs_Locations::getPlugins(); if( $dirs->check($path) ){ return 'plugin'; } } // anything else, which includes subdirectories of WP_LANG_DIR etc.. return 'other'; } /** * Get translated version of getTypeId * @param string $id * @return string */ public function getTypeLabel( $id ){ switch( $id ){ case 'theme': case 'plugin': // Translators: Refers to bundled plugin or theme translation files - i.e. those supplied by the author return _x('Author','File location','loco-translate'); case 'wplang': // Translators: Refers to system-installed translation files - i.e. those under WP_LANG_DIR return _x('System','File location','loco-translate'); case 'custom': // Translators: Refers to translation files in Loco's custom/protected directory return _x('Custom','File location','loco-translate'); case 'other': // Translators: Refers to translation files in an alternative location that isn't Author, System or Custom. return _x('Other','File location','loco-translate'); } throw new InvalidArgumentException('Invalid location type: '.$id ); } } FileWriter.php 0000644 00000032231 14720714326 0007340 0 ustar 00 <?php /** * Provides write operation context via the WordPress file system API */ class Loco_fs_FileWriter { /** * @var Loco_fs_File */ private $file; /** * @var WP_Filesystem_Base */ private $fs; /** * @param Loco_fs_File $file */ public function __construct( Loco_fs_File $file ){ $this->setFile($file); $this->disconnect(); } /** * @param Loco_fs_File $file * @return Loco_fs_FileWriter */ public function setFile( Loco_fs_File $file ){ $this->file = $file; return $this; } /** * Connect to alternative file system context * * @param WP_Filesystem_Base $fs * @param bool $disconnected whether reconnect required * @return Loco_fs_FileWriter * @throws Loco_error_WriteException */ public function connect( WP_Filesystem_Base $fs, $disconnected = true ){ if( $disconnected && ! $fs->connect() ){ $errors = $fs->errors; if( is_wp_error($errors) ){ foreach( $errors->get_error_messages() as $reason ){ Loco_error_AdminNotices::warn($reason); } } throw new Loco_error_WriteException( __('Failed to connect to remote server','loco-translate') ); } $this->fs = $fs; return $this; } /** * Revert to direct file system connection * @return self */ public function disconnect(){ $this->fs = Loco_api_WordPressFileSystem::direct(); return $this; } /** * Get mapped path for use in indirect file system manipulation * @return string */ public function getPath(){ return $this->mapPath( $this->file->getPath() ); } /** * Map virtual path for remote file system * @param string $path * @return string */ private function mapPath( $path ){ if( ! $this->isDirect() ){ $base = untrailingslashit( Loco_fs_File::abs(loco_constant('WP_CONTENT_DIR')) ); $snip = strlen($base); if( substr( $path, 0, $snip ) !== $base ){ // fall back to default path in case of symlinks $base = trailingslashit(ABSPATH).'wp-content'; $snip = strlen($base); if( substr( $path, 0, $snip ) !== $base ){ throw new Loco_error_WriteException('Remote path must be under WP_CONTENT_DIR'); } } $virt = $this->fs->wp_content_dir(); if( false === $virt ){ throw new Loco_error_WriteException('Failed to find WP_CONTENT_DIR via remote connection'); } $virt = untrailingslashit( $virt ); $path = substr_replace( $path, $virt, 0, $snip ); } return $path; } /** * Test if a direct (not remote) file system * @return bool */ public function isDirect(){ return $this->fs instanceof WP_Filesystem_Direct; } /** * @return bool */ public function writable(){ return ! $this->disabled() && $this->fs->is_writable( $this->getPath() ); } /** * @param int $mode file mode integer e.g 0664 * @param bool $recursive whether to set recursively (directories) * @return Loco_fs_FileWriter * @throws Loco_error_WriteException */ public function chmod( $mode, $recursive = false ){ $this->authorize(); if( ! $this->fs->chmod( $this->getPath(), $mode, $recursive ) ){ // translators: %s refers to a file name, for which the chmod operation failed. throw new Loco_error_WriteException( sprintf( __('Failed to chmod %s','loco-translate'), $this->file->basename() ) ); } return $this; } /** * @param Loco_fs_File $copy target for copy * @return Loco_fs_FileWriter * @throws Loco_error_WriteException */ public function copy( Loco_fs_File $copy ){ $this->authorize(); $source = $this->getPath(); $target = $this->mapPath( $copy->getPath() ); // bugs in WP file system "exists" methods means we must force $overwrite=true; so checking file existence first if( $copy->exists() ){ Loco_error_AdminNotices::debug(sprintf('Cannot copy %s to %s (target already exists)',$source,$target)); throw new Loco_error_WriteException( __('Refusing to copy over an existing file','loco-translate') ); } // ensure target directory exists, although in most cases copy will be in situ $parent = $copy->getParent(); if( $parent && ! $parent->exists() ){ $this->mkdir($parent); } // perform WP file system copy method if( ! $this->fs->copy($source,$target,true) ){ Loco_error_AdminNotices::debug(sprintf('Failed to copy %s to %s via "%s" method',$source,$target,$this->fs->method)); // translators: (1) Source file name (2) Target file name throw new Loco_error_WriteException( sprintf( __('Failed to copy %1$s to %2$s','loco-translate'), basename($source), basename($target) ) ); } return $this; } /** * @param Loco_fs_File $dest target file with new path * @return Loco_fs_FileWriter * @throws Loco_error_WriteException */ public function move( Loco_fs_File $dest ){ $orig = $this->file; try { // target should have been authorized to create the new file $context = clone $dest->getWriteContext(); $context->setFile($orig); $context->copy($dest); // source should have been authorized to delete the original file $this->delete(false); return $this; } catch( Loco_error_WriteException $e ){ Loco_error_AdminNotices::debug('copy/delete failure: '.$e->getMessage() ); throw new Loco_error_WriteException( sprintf( 'Failed to move %s', $orig->basename() ) ); } } /** * @param bool $recursive * @return self * @throws Loco_error_WriteException */ public function delete( $recursive = false ){ $this->authorize(); if( ! $this->fs->delete( $this->getPath(), $recursive ) ){ // translators: %s refers to a file name, for which a delete operation failed. throw new Loco_error_WriteException( sprintf( __('Failed to delete %s','loco-translate'), $this->file->basename() ) ); } return $this; } /** * @param string $data * @return Loco_fs_FileWriter * @throws Loco_error_WriteException */ public function putContents( $data ){ $this->authorize(); $file = $this->file; if( $file->isDirectory() ){ // translators: %s refers to a directory name which was expected to be an ordinary file throw new Loco_error_WriteException( sprintf( __('"%s" is a directory, not a file','loco-translate'), $file->basename() ) ); } // file having no parent directory is likely an error, like a relative path. $dir = $file->getParent(); if( ! $dir ){ throw new Loco_error_WriteException( sprintf('Bad file path "%s"',$file) ); } // avoid chmod of existing file if( $file->exists() ){ $mode = $file->mode(); } // may have bypassed definition of FS_CHMOD_FILE else { $mode = defined('FS_CHMOD_FILE') ? FS_CHMOD_FILE : 0644; // new file may also require directory path building if( ! $dir->exists() ){ $this->mkdir($dir); } } $fs = $this->fs; $path = $this->getPath(); if( ! $fs->put_contents($path,$data,$mode) ){ // provide useful reason for failure if possible if( $file->exists() && ! $file->writable() ){ Loco_error_AdminNotices::debug( sprintf('File not writable via "%s" method, check permissions on %s',$fs->method,$path) ); throw new Loco_error_WriteException( __("Permission denied to update file",'loco-translate') ); } // directory path should exist or have thrown error earlier. // directory path may not be writable by same fs context if( ! $dir->writable() ){ Loco_error_AdminNotices::debug( sprintf('Directory not writable via "%s" method; check permissions for %s',$fs->method,$dir) ); throw new Loco_error_WriteException( __("Parent directory isn't writable",'loco-translate') ); } // else reason for failure is not established Loco_error_AdminNotices::debug( sprintf('Unknown write failure via "%s" method; check %s',$fs->method,$path) ); throw new Loco_error_WriteException( __('Failed to save file','loco-translate').': '.$file->basename() ); } // trigger hook every time a file is written. This allows caches to be invalidated try { do_action( 'loco_file_written', $path ); } catch( Exception $e ){ Loco_error_AdminNotices::add( Loco_error_Exception::convert($e) ); } return $this; } /** * Create current directory context * @param Loco_fs_File|null $here optional working directory * @return bool * @throws Loco_error_WriteException */ public function mkdir( Loco_fs_File $here = null ) { if( is_null($here) ){ $here = $this->file; } $this->authorize(); $fs = $this->fs; // may have bypassed definition of FS_CHMOD_DIR $mode = defined('FS_CHMOD_DIR') ? FS_CHMOD_DIR : 0755; // find first ancestor that exists while building tree $stack = []; /* @var $parent Loco_fs_Directory */ while( $parent = $here->getParent() ){ array_unshift( $stack, $this->mapPath( $here->getPath() ) ); if( '/' === $parent->getPath() || $parent->readable() ){ // have existent directory, now build full path foreach( $stack as $path ){ if( ! $fs->mkdir($path,$mode) ){ Loco_error_AdminNotices::debug( sprintf('mkdir(%s,%03o) failed via "%s" method;',var_export($path,1),$mode,$fs->method) ); throw new Loco_error_WriteException( __('Failed to create directory','loco-translate') ); } } return true; } $here = $parent; } // refusing to create directory when the entire path is missing. e.g. "/bad" throw new Loco_error_WriteException( __('Failed to build directory path','loco-translate') ); } /** * Check whether write operations are permitted, or throw * @throws Loco_error_WriteException * @return self */ public function authorize(){ if( $this->disabled() ){ throw new Loco_error_WriteException( __('File modification is disallowed by your WordPress config','loco-translate') ); } $opts = Loco_data_Settings::get(); // deny system file changes (fs_protect = 2) if( 1 < $opts->fs_protect && $this->file->getUpdateType() ){ throw new Loco_error_WriteException( __('Modification of installed files is disallowed by the plugin settings','loco-translate') ); } // we may need to examine multiple extensions, or there may be none for directories $exts = array_slice( explode('.',strtolower($this->file->basename())), 1 ); if( ! $exts ){ return $this; } $ext = array_pop($exts); // deny POT modification (pot_protect = 2) // this assumes that templates all have .pot extension, which isn't guaranteed. UI should prevent saving of wrongly files like "default.po" if( 'pot' === $ext && 1 < $opts->pot_protect ){ throw new Loco_error_WriteException( __( 'Modification of POT (template) files is disallowed by the plugin settings', 'loco-translate' ) ); } // Full list of file extensions this plugin can modify; note that specific actions may limit this further. $allow = [ 'po'=>1, 'pot'=>1, 'mo'=>1, 'json'=>1, 'po~'=>1, 'pot~'=>1, 'txt'=>1, 'xml'=>1, 'zip'=>1 ]; if( array_key_exists($ext,$allow) ){ return $this; } // Writing to PHP files is generally disallowed, but we need to write l10n.php cache files if( preg_match('/php\\d*/i',$ext) ){ $prev = array_pop($exts); if( 'mo' === $prev || 'l10n' === $prev ){ return $this; } } throw new Loco_error_WriteException('File extension disallowed .'.$ext ); } /** * Check if file system modification is banned at WordPress level * @return bool */ public function disabled(){ // WordPress >= 4.8 if( function_exists('wp_is_file_mod_allowed') ){ $context = apply_filters( 'loco_file_mod_allowed_context', 'download_language_pack', $this->file ); return ! wp_is_file_mod_allowed( $context ); } // fall back to direct constant check return (bool) loco_constant('DISALLOW_FILE_MODS'); } } LocaleFileList.php 0000644 00000003161 14720714326 0010117 0 ustar 00 <?php /** * File list indexed by locale codes */ class Loco_fs_LocaleFileList extends Loco_fs_FileList { /** * Look up locale entries by their tag * @var array */ private $index = []; /** * @return Loco_fs_LocaleFileList */ public function addLocalized( Loco_fs_LocaleFile $file ){ $i = count($this); $this->add( $file ); if( count($this) !== $i ){ if( $key = $file->getSuffix() ){ $this->index[$key][] = $i; } } return $this; } /** * Get a new list containing just files for a given locale (exactly) * @return Loco_fs_LocaleFileList */ public function filter( $tag ){ $list = new Loco_fs_LocaleFileList; if( isset($this->index[$tag]) ){ foreach( $this->index[$tag] as $i ){ $list->addLocalized( $this[$i] ); } } return $list; } /** * Get a unique list of valid locales for which there are files * @return array<Loco_Locale> */ public function getLocales(){ $list = []; foreach( array_keys($this->index) as $tag ){ $locale = Loco_Locale::parse($tag); if( $locale->isValid() ){ $list[$tag] = $locale; } } return $list; } /** * {@inheritdoc} * @return Loco_fs_LocaleFileList */ public function augment( Loco_fs_FileList $list ){ foreach( $list as $file ){ $this->addLocalized( $file ); } return $this; } } FileList.php 0000644 00000005455 14720714326 0007007 0 ustar 00 <?php /** * Collection of unique file references * * @method Loco_fs_File[] getArrayCopy */ class Loco_fs_FileList extends ArrayIterator implements Loco_fs_FileListInterface { /** * Hash map for ensuring files only added once * @var array */ private $unique = []; /** * Construct with initial list if files * @param Loco_fs_File[] $a */ public function __construct( $a = [] ){ parent::__construct(); foreach( $a as $file ){ $this->add( $file ); } } /** * Use instead of clone because that does weird things to ArrayIterator instances. * Note that this does NOT clone individual file members. * @return Loco_fs_FileList */ public function copy(){ return new Loco_fs_FileList( $this->getArrayCopy() ); } /** * Like getArrayCopy, but exports string paths * @return array */ public function export(){ $a = []; foreach( $this as $file ){ $a[] = (string) $file; } return $a; } /** * @internal * @return string */ public function __toString(){ return implode( "\n", $this->getArrayCopy() ); } /** * Generate a unique key for file * @param Loco_fs_File $file * @return string */ private function hash( Loco_fs_File $file ){ return $file->getRealPath() ?: $file->normalize(); } /** * {@inheritDoc} */ #[ReturnTypeWillChange] public function offsetSet( $key, $value ){ throw new Exception('Use Loco_fs_FileList::add'); } /** * {@inheritDoc} */ public function add( Loco_fs_File $file ){ $hash = $this->hash( $file ); if( isset($this->unique[$hash]) ){ return false; } $this->unique[$hash] = true; parent::offsetSet( null, $file ); return true; } /** * Check if given file is already in list * @param Loco_fs_File $file * @return bool */ public function has( Loco_fs_File $file ){ $hash = $this->hash( $file ); return isset($this->unique[$hash]); } /** * Get a copy of list with only files not contained in passed list * @param self $not_in * @return self */ public function diff( Loco_fs_FileList $not_in ){ $list = new Loco_fs_FileList; foreach( $this as $file ){ $not_in->has($file) || $list->add( $file ); } return $list; } /** * Merge another list of the SAME TYPE uniquely on top of current one * @param self $list * @return self */ public function augment( loco_fs_FileList $list ){ foreach( $list as $file ){ $this->add( $file ); } return $this; } } File.php 0000644 00000042653 14720714326 0006154 0 ustar 00 <?php /** * */ class Loco_fs_File { /** * @var Loco_fs_FileWriter */ private $w; /** * Path to file * @var string */ private $path; /** * Cached pathinfo() data * @var array */ private $info; /** * Base path which path has been normalized against * @var string */ private $base; /** * Flag set when current path is relative * @var bool */ private $rel; /** * Check if a path is absolute and return fixed slashes for readability * @param string $path * @return string fixed path, or "" if not absolute */ public static function abs( $path ){ $path = (string) $path; if( '' !== $path ){ $chr1 = substr($path,0,1); // return unmodified path if starts "/" if( '/' === $chr1 ){ return $path; } // Windows drive path if "X:" or network path if "\\" $chr2 = (string) substr($path,1,1); if( '' !== $chr2 ){ if( ':' === $chr2 || ( '\\' === $chr1 && '\\' === $chr2 ) ){ return strtoupper($chr1).$chr2.strtr( substr($path,2), '\\', '/' ); } } } // else path is relative, so return falsy string return ''; } /** * Call PHP is_readable() but suppress E_WARNING when path is outside open_basedir. * @param string $path * @return bool */ public static function is_readable( $path ){ if( '' === $path || '.' === $path[0] ){ throw new InvalidArgumentException('Relative paths disallowed'); } // Reduce PHP errors from is_readable to debug messages Loco_error_AdminNotices::capture(E_NOTICE|E_WARNING); $bool = is_readable($path); restore_error_handler(); return $bool; } /** * Create file with initial, unvalidated path * @param string $path */ public function __construct( $path ){ $this->setPath( $path ); } /** * Internally set path value and flag whether relative or absolute * @param string $path * @return void */ private function setPath( $path ){ $path = (string) $path; if( $fixed = self::abs($path) ){ $path = $fixed; $this->rel = false; } else { $this->rel = true; } if( $path !== $this->path ){ $this->path = $path; $this->info = null; } } /** * @return bool */ public function isAbsolute(){ return ! $this->rel; } /** * @internal */ public function __clone(){ $this->cloneWriteContext( $this->w ); } /** * Copy write context with our file reference * @param Loco_fs_FileWriter|null $context * @return void */ private function cloneWriteContext( Loco_fs_FileWriter $context = null ){ if( $context ){ $context = clone $context; $this->w = $context->setFile($this); } } /** * Get file system context for operations that *modify* the file system. * Read operations and operations that stat the file will always do so directly. * @return Loco_fs_FileWriter */ public function getWriteContext(){ if( ! $this->w ){ $this->w = new Loco_fs_FileWriter( $this ); } return $this->w; } /** * @internal */ private function pathinfo(){ return is_array($this->info) ? $this->info : ( $this->info = pathinfo($this->path) ); } /** * Checks if a file exists, and is within open_basedir restrictions. * This does NOT check if file permissions allow PHP to read it. Call $this->readable() or self::is_readable($path). * @return bool */ public function exists(){ return file_exists($this->path); } /** * @return bool */ public function writable(){ return $this->getWriteContext()->writable(); } /** * Check if the file exists and is readable by the current PHP process. * @return bool */ public function readable(){ return self::is_readable($this->path); } /** * @return bool */ public function deletable(){ $parent = $this->getParent(); if( $parent && $parent->writable() ){ // sticky directory requires that either the file its parent is owned by effective user if( $parent->mode() & 01000 ){ $writer = $this->getWriteContext(); if( $writer->isDirect() && ( $uid = Loco_compat_PosixExtension::getuid() ) ){ return $uid === $this->uid() || $uid === $parent->uid(); } // else delete operation won't be done directly, so can't preempt sticky problems // TODO is it worth comparing FTP username etc.. for ownership? } // defaulting to "deletable" based on fact that parent is writable. return true; } return false; } /** * Get owner uid * @return int */ public function uid(){ return fileowner($this->path); } /** * Get group gid * @return int */ public function gid(){ return filegroup($this->path); } /** * Check if file can't be overwritten when existent, nor created when non-existent * This does not check permissions recursively as directory trees are not built implicitly * @return bool */ public function locked(){ if( $this->exists() ){ return ! $this->writable(); } if( $dir = $this->getParent() ){ return ! $dir->writable(); } return true; } /** * Check if full path can be built to non-existent file. * @return bool */ public function creatable(){ $file = $this; while( $file = $file->getParent() ){ if( $file->exists() ){ return $file->writable(); } } return false; } /** * @return string */ public function dirname(){ $info = $this->pathinfo(); return $info['dirname']; } /** * @return string */ public function basename(){ $info = $this->pathinfo(); return $info['basename']; } /** * @return string */ public function filename(){ $info = $this->pathinfo(); return $info['filename']; } /** * Gets final file extension, e.g. "html" in "foo.php.html" * @return string */ public function extension(){ $info = $this->pathinfo(); return isset($info['extension']) ? $info['extension'] : ''; } /** * Gets full file extension after first dot ("."), e.g. "php.html" in "foo.php.html" * @return string */ public function fullExtension(){ $bits = explode('.',$this->basename(),2); return array_key_exists(1,$bits) ? $bits[1] : ''; } /** * @return string */ public function getPath(){ return $this->path; } /** * Get file modification time as unix timestamp in seconds * @return int */ public function modified(){ return filemtime( $this->path ); } /** * Get file size in bytes * @return int */ public function size(){ return filesize( $this->path ); } /** * @return int */ public function mode(){ if( is_link($this->path) ){ $stat = lstat( $this->path ); $mode = $stat[2]; } else { $mode = fileperms($this->path); } return $mode; } /** * Set file mode * @param int $mode file mode integer e.g 0664 * @param bool $recursive whether to set recursively (directories) * @return Loco_fs_File */ public function chmod( $mode, $recursive = false ){ $this->getWriteContext()->chmod( $mode, $recursive ); return $this->clearStat(); } /** * Clear stat cache if any file data has changed * @return Loco_fs_File */ public function clearStat(){ $this->info = null; // PHP 5.3.0 Added optional clear_realpath_cache and filename parameters. if( version_compare( PHP_VERSION, '5.3.0', '>=' ) ){ clearstatcache( true, $this->path ); } // else no choice but to drop entire stat cache else { clearstatcache(); } return $this; } /** * @return string */ public function __toString(){ return $this->getPath(); } /** * Check if passed path is equal to ours * @param string|self $ref * @return bool */ public function equal( $ref ){ return $this->path === (string) $ref; } /** * Normalize path for string comparison, resolves redundant dots and slashes. * @param string $base path to prefix * @return string */ public function normalize( $base = '' ){ if( $path = self::abs($base) ){ $base = $path; } if( $base !== $this->base ){ $path = $this->path; if( '' === $path ){ $this->setPath($base); } else { if( ! $this->rel || ! $base ){ $b = []; } else { $b = self::explode( $base, [] ); } $b = self::explode( $path, $b ); $this->setPath( implode('/',$b) ); } $this->base = $base; } return $this->path; } /** * Get real path if file is real, but without altering internal path property. * Also skips call to realpath() when likely to raise E_WARNING due to open_basedir * @return string */ public function getRealPath(){ if( $this->readable() ){ $path = realpath( $this->getPath() ); if( is_string($path) ){ return $path; } } return ''; } /** * @param string $path * @param string[] $b * @return array */ private static function explode( $path, array $b ){ $a = explode( '/', $path ); foreach( $a as $i => $s ){ if( '' === $s ){ if( 0 !== $i ){ continue; } } if( '.' === $s ){ continue; } if( '..' === $s ){ if( array_pop($b) ){ continue; } } $b[] = $s; } return $b; } /** * Get path relative to given location, unless path is already relative * @param string $base Base path * @return string path relative to given base */ public function getRelativePath( $base ){ $path = $this->normalize(); if( self::abs($path) ){ // base may require normalizing $file = new Loco_fs_File($base); $base = $file->normalize(); $length = strlen($base)+1; // if we are below given base path, return ./relative if( substr($path,0,$length) === $base.'/' ){ if( strlen($path) > $length ){ return substr( $path, $length ); } // else paths were identical return ''; } // else attempt to find nearest common root $i = 0; $source = explode('/',$base); $target = explode('/',$path); while( isset($source[$i]) && isset($target[$i]) && $source[$i] === $target[$i] ){ $i++; } if( $i > 1 ){ $depth = count($source) - $i; $build = array_merge( array_fill( 0, $depth, '..' ), array_slice( $target, $i ) ); $path = implode( '/', $build ); } } // else return unmodified return $path; } /** * @return bool */ public function isDirectory(){ if( $this->readable() ){ return is_dir($this->path); } return '' === $this->extension(); } /** * Load contents of file into a string * @return string */ public function getContents(){ return file_get_contents( $this->path ); } /** * Check if path is under a theme directory * @return bool */ public function underThemeDirectory(){ return Loco_fs_Locations::getThemes()->check( $this->path ); } /** * Check if path is under a plugin directory * @return bool */ public function underPluginDirectory(){ return Loco_fs_Locations::getPlugins()->check( $this->path ); } /** * Check if path is under wp-content directory * @return bool */ public function underContentDirectory(){ return Loco_fs_Locations::getContent()->check( $this->path ); } /** * Check if path is under WordPress root directory (ABSPATH) * @return bool */ public function underWordPressDirectory(){ return Loco_fs_Locations::getRoot()->check( $this->path ); } /** * Check if path is under the global system directory * @return bool */ public function underGlobalDirectory(){ return Loco_fs_Locations::getGlobal()->check( $this->path ); } /** * @return Loco_fs_Directory|null */ public function getParent(){ $dir = null; $path = $this->dirname(); if( '.' !== $path && $this->path !== $path ){ $dir = new Loco_fs_Directory( $path ); $dir->cloneWriteContext( $this->w ); } return $dir; } /** * Copy this file for real * @param string $dest new path * @throws Loco_error_WriteException * @return Loco_fs_File new file */ public function copy( $dest ){ $copy = clone $this; $copy->path = $dest; $copy->clearStat(); $this->getWriteContext()->copy($copy); return $copy; } /** * Move/rename this file for real * @param Loco_fs_File $dest target file with new path * @throws Loco_error_WriteException * @return Loco_fs_File original file that should no longer exist */ public function move( Loco_fs_File $dest ){ $this->getWriteContext()->move($dest); return $this->clearStat(); } /** * Delete this file for real * @throws Loco_error_WriteException * @return Loco_fs_File */ public function unlink(){ $recursive = $this->isDirectory(); $this->getWriteContext()->delete( $recursive ); return $this->clearStat(); } /** * Copy this object with an alternative file extension * @param string $ext new extension * @return self */ public function cloneExtension( $ext ){ return $this->cloneBasename( $this->filename().'.'.ltrim($ext,'.') ); } /** * Copy this object with an alternative name under the same directory * @param string $name new name * @return self */ public function cloneBasename( $name ){ $file = clone $this; $file->path = rtrim($file->dirname(),'/').'/'.$name; $file->info = null; return $file; } /** * Ensure full parent directory tree exists * @return Loco_fs_Directory|null */ public function createParent(){ $dir = $this->getParent(); if( $dir instanceof Loco_fs_Directory && ! $dir->exists() ){ $dir->mkdir(); } return $dir; } /** * @param string $data file contents * @return int number of bytes written to file */ public function putContents( $data ){ $this->getWriteContext()->putContents($data); $this->clearStat(); return $this->size(); } /** * Establish what part of the WordPress file system this is. * Value is that used by WP_Automatic_Updater::should_update. * @return string "core", "plugin", "theme" or "translation" */ public function getUpdateType(){ // global languages directory root, and canonical subdirectories $dirpath = (string) ( $this->isDirectory() ? $this : $this->getParent() ); $sub = Loco_fs_Locations::getGlobal()->rel($dirpath); if( is_string($sub) && '' !== $sub ){ list($root) = explode('/', $sub, 2 ); if( '.' === $root || 'themes' === $root || 'plugins' === $root ){ return 'translation'; } } // theme and plugin locations can be at any depth else if( $this->underThemeDirectory() ){ return 'theme'; } else if( $this->underPluginDirectory() ){ return 'plugin'; } // core locations are under WordPress root, but not under wp-content else if( $this->underWordPressDirectory() && ! $this->underContentDirectory() ){ return 'core'; } // else not an update type return ''; } /** * Get MD5 hash of file contents * @return string */ public function md5(){ if( $this->exists() ) { return md5_file( $this->path ); } else { return 'd41d8cd98f00b204e9800998ecf8427e'; } } } Revisions.php 0000644 00000015030 14720714326 0007243 0 ustar 00 <?php /** * Manages revisions (backups) of a file. * Revision file names have form "<filename>-backup-<date>.<ext>~" */ class Loco_fs_Revisions implements Countable/*, IteratorAggregate*/ { /** * @var Loco_fs_File */ private $master; /** * Sortable list of backed up file paths (not including master) * @var array */ private $paths; /** * Cached regular expression for matching backup file paths * @var string */ private $regex; /** * Cached count of backups + 1 * @var int */ private $length; /** * Paths to delete when object removed from memory * @var array */ private $trash = []; /** * Construct from master file (current version) * @param Loco_fs_File $file */ public function __construct( Loco_fs_File $file ){ $this->master = $file; } /** * @internal * Executes deferred deletions with silent errors */ public function __destruct(){ if( $trash = $this->trash ){ $writer = clone $this->master->getWriteContext(); foreach( $trash as $file ){ if( $file->exists() ){ try { $writer->setFile($file); $writer->delete(false); } catch( Loco_error_WriteException $e ){ // avoiding fatal error because pruning is non-critical operation Loco_error_AdminNotices::debug( $e->getMessage() ); } } } } } /** * Check that file permissions allow a new backup to be created * @return bool */ public function writable(){ return $this->master->exists() && $this->master->getParent()->writable(); } /** * Create a new backup of current version * @return Loco_fs_File */ public function create(){ $vers = 0; $date = date('YmdHis'); $ext = $this->master->extension(); $base = $this->master->dirname().'/'.$this->master->filename(); do { $path = sprintf( '%s-backup-%s%u.%s~', $base, $date, $vers++, $ext); } while ( file_exists($path) ); $copy = $this->master->copy( $path ); // invalidate cache so next access reads disk $this->paths = null; $this->length = null; return $copy; } /** * Delete the oldest backups until we have maximum of $num_backups remaining * @param int $num_backups * @return Loco_fs_Revisions */ public function prune( $num_backups ){ $paths = $this->getPaths(); if( isset($paths[$num_backups]) ){ foreach( array_slice( $paths, $num_backups ) as $path ){ $this->unlinkLater($path); } $this->paths = array_slice( $paths, 0, $num_backups ); $this->length = null; } return $this; } /** * build regex for matching backed up revisions of master * @return string */ private function getRegExp(){ $regex = $this->regex; if( is_null($regex) ){ $regex = preg_quote( $this->master->filename(), '/' ).'-backup-(\\d{14,})'; if( $ext = $this->master->extension() ){ $regex .= preg_quote('.'.$ext,'/'); } $regex = '/^'.$regex.'~/'; $this->regex = $regex; } return $regex; } /** * @return array */ public function getPaths(){ if( is_null($this->paths) ){ $this->paths = []; $regex = $this->getRegExp(); $finder = new Loco_fs_FileFinder( $this->master->dirname() ); $finder->setRecursive(false); /* @var $file Loco_fs_File */ foreach( $finder as $file ){ if( preg_match( $regex, $file->basename() ) ){ $this->paths[] = $file->getPath(); } } // time sort order descending rsort( $this->paths ); } return $this->paths; } /** * Parse a file path into a timestamp * @param string $path * @return int */ public function getTimestamp( $path ){ $name = basename($path); if( preg_match( $this->getRegExp(), $name, $r ) ){ $ymdhis = substr( $r[1], 0, 14 ); return strtotime( $ymdhis ); } throw new Loco_error_Exception('Invalid revision file: '.$name); } /** * Get number of backups plus master * @return int */ #[ReturnTypeWillChange] public function count(){ if( ! $this->length ){ $this->length = 1 + count( $this->getPaths() ); } return $this->length; } /** * Delete file when object removed from memory. * Previously unlinked on shutdown, but doesn't work with WordPress file system abstraction * @param string $path * @return void */ public function unlinkLater($path){ $this->trash[] = new Loco_fs_File($path); } /** * Execute backup of current file if enabled in settings. * @param Loco_api_WordPressFileSystem $api Authorized file system * @return Loco_fs_File|null backup file if saved */ public function rotate( Loco_api_WordPressFileSystem $api ){ $backup = null; $pofile = $this->master; $num_backups = Loco_data_Settings::get()->num_backups; if( $num_backups ){ // Attempt backup, but return null on failure try { $api->authorizeCopy($pofile); $backup = $this->create(); } catch( Exception $e ){ Loco_error_AdminNotices::debug( $e->getMessage() ); // translators: %s refers to a directory where a backup file could not be created due to file permissions $message = __('Failed to create backup file in "%s". Check file permissions or disable backups','loco-translate'); Loco_error_AdminNotices::warn( sprintf( $message, $pofile->getParent()->basename() ) ); } // prune operation in separate catch block as error would be misleading try { $this->prune($num_backups); } catch( Exception $e ){ Loco_error_AdminNotices::debug('Failed to prune backup files: '.$e->getMessage() ); } } return $backup; } } FileFinder.php 0000644 00000032711 14720714326 0007276 0 ustar 00 <?php /** * Lazy file iterator. Pulls directory listings when required. */ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterface { /** * Top-level search directories * @var Loco_fs_FileList */ private $roots; /** * Directories to search, including those descended into * @var Loco_fs_FileList|null */ private $subdir; /** * Whether directories all read into memory * @var bool */ private $cached; /** * File listing already matched * @var Loco_fs_FileList|null */ private $cache; /** * Internal array pointer for whole list of paths * @var int */ private $i; /** * Internal pointer for directory being read * @var int|null */ private $d; /** * Current directory being read * @var resource|null */ private $dir; /** * Path of current directory being read * @var string */ private $cwd; /** * Whether directories added to search will be recursive by default * @var bool */ private $recursive = false; /** * Whether currently recursing into subdirectories * This is switched on and off as each directories is opened * @var bool|null */ private $recursing; /** * Whether to follow symlinks when recursing into subdirectories * Root-level symlinks are always resolved when possible * @var bool */ private $symlinks = true; /** * Registry of followed links by their original path * @var Loco_fs_FileList|null */ private $linked; /** * List of file extensions to filter on and group by * @var null|Loco_fs_FileList[] */ private $exts; /** * List of directory names to exclude from recursion * @var null|Loco_fs_File[] */ private $excluded; /** * Create initial list of directories to search * @param string $root default root to start */ public function __construct( $root = '' ){ $this->roots = new Loco_fs_FileList; $this->linked = new Loco_fs_FileList; $this->excluded = []; if( $root ){ $this->addRoot( $root ); } } /** * Set recursive state of all defined roots * @param bool $bool * @return Loco_fs_FileFinder */ public function setRecursive( $bool ){ $this->invalidate(); $this->recursive = $bool; /* @var $dir Loco_fs_Directory */ foreach( $this->roots as $dir ){ $dir->setRecursive( $bool ); } return $this; } /** * @param bool $bool * @return Loco_fs_FileFinder */ public function followLinks( $bool ){ $this->invalidate(); $this->symlinks = (bool) $bool; return $this; } /** * @param string $path * @return Loco_fs_Link */ public function getFollowed( $path ){ $path = (string) $path; /* @var Loco_fs_Link $link */ foreach( $this->linked as $link ){ $file = $link->resolve(); $orig = $file->getPath(); // exact match on followed path if( $orig === $path ){ return $link; } // match further up the directory tree if( $file instanceof Loco_fs_Directory ){ $orig = trailingslashit($orig); $snip = strlen($orig); if( $orig === substr($path,0,$snip) ){ return new Loco_fs_Link( $link->getPath().'/'.substr($path,$snip) ); } } } return null; } /** * @return void */ private function invalidate(){ $this->cached = false; $this->cache = null; $this->subdir = null; } /** * @return Loco_fs_FileList */ public function export(){ if( ! $this->cached ){ $this->rewind(); while( $this->valid() ){ $this->next(); } } return $this->cache; } /** * @return Loco_fs_FileList[] */ public function exportGroups(){ $this->cached || $this->export(); return $this->exts; } /** * Add a directory root to search. * @param string $root * @param bool|null $recursive * @return Loco_fs_FileFinder */ public function addRoot( $root, $recursive = null ){ $this->invalidate(); $dir = new Loco_fs_Directory($root); $this->roots->add( $dir ); // new directory inherits current global setting unless set explicitly $dir->setRecursive( is_bool($recursive) ? $recursive : $this->recursive ); return $this; } /** * Get all root directories to be searched * @return Loco_fs_FileList */ public function getRootDirectories(){ return $this->roots; } /** * Filter results by given file extensions * @return Loco_fs_FileFinder */ public function group( ...$exts ){ return $this->filterExtensions($exts); } /** * Filter results by file extensions given in array * @param string[] $exts File extension strings * @return Loco_fs_FileFinder */ public function filterExtensions( array $exts ){ $this->invalidate(); $this->exts = []; foreach( $exts as $ext ){ $this->exts[ ltrim($ext,'*.') ] = new Loco_fs_FileList; } return $this; } /** * Add one or more paths to exclude from listing * @return Loco_fs_FileFinder */ public function exclude( ...$paths ){ $this->invalidate(); foreach( $paths as $path ){ $file = new Loco_fs_File($path); // if path is absolute, add straight onto list if( $file->isAbsolute() ){ $file->normalize(); $this->excluded[] = $file; } // else append to all defined roots else { foreach( $this->roots as $dir ) { $file = new Loco_fs_File( $dir.'/'.$path ); $file->normalize(); $this->excluded[] = $file; } } } return $this; } /** * Export excluded paths as file objects * @return Loco_fs_File[] */ public function getExcluded(){ return $this->excluded; } /** * @param Loco_fs_Directory $dir * @return void */ private function open( Loco_fs_Directory $dir ){ $path = $dir->getPath(); $recursive = $dir->isRecursive(); if( is_link($path) ){ $link = new Loco_fs_Link($path); if( $link->isDirectory() ){ $path = $link->resolve()->getPath(); $this->linked->add($link); } } $this->cwd = $path; $this->recursing = $recursive; $this->dir = opendir($path); } /** * @return void */ private function close(){ closedir( $this->dir ); $this->dir = null; $this->recursing = null; } /** * Test if given path is matched by one of our exclude rules * @param string $path * @return bool */ public function isExcluded( $path ){ /* @var Loco_fs_File $excl */ foreach( $this->excluded as $excl ){ if( $excl->equal($path) ){ return true; } } return false; } /** * Read next valid file path from root directories * @return Loco_fs_File|null */ private function read(){ while( is_resource($this->dir) ){ while( $f = readdir($this->dir) ){ // dot-files always excluded if( '.' === substr($f,0,1) ){ continue; } $path = $this->cwd.'/'.$f; // early path exclusion check if( $this->isExcluded($path) ){ continue; } // early filter on file extension when grouping if( is_array($this->exts) ){ $ext = pathinfo($f,PATHINFO_EXTENSION); // missing file extension only relevant for directories if( '' === $ext ){ if( ! $this->recursing || ! is_dir($path) ){ continue; } } // any other extension can be skipped else if( ! array_key_exists($ext,$this->exts) ){ continue; } } // follow symlinks (subdir hash ensures against loops) if( is_link($path) ){ if( ! $this->symlinks ){ continue; } $link = new Loco_fs_Link($path); if( $file = $link->resolve() ){ $path = $file->getPath(); if( $this->isExcluded($path) ){ continue; } $this->linked->add($link); } else { continue; } } // add subdirectory to recursion list, or skip if( is_dir($path) ){ if( $this->recursing ){ $subdir = new Loco_fs_Directory($path); $subdir->setRecursive(true); $this->subdir->add( $subdir ); } continue; } // file represented as object containing original path $file = new Loco_fs_File($path); $this->add($file); return $file; } $this->close(); // Advance directory and continue outer loop $d = $this->d + 1; if( $this->subdir->offsetExists($d) ){ $this->d = $d; $this->open( $this->subdir->offsetGet($d) ); } // else no directories left to search else { break; } } // at end of all available files $this->cached = true; return null; } /** * {@inheritDoc} */ public function add( Loco_fs_File $file ){ if( is_array($this->exts) ){ $ext = $file->extension(); /*if( '' === $ext || ! array_key_exists($ext,$this->exts) ){ throw new LogicException('Should have filtered out '.$file->basename().' when grouping by *.{'.implode(',',array_keys($this->exts)).'}' ); }*/ $this->exts[$ext]->add($file); } if( $this->cache->add($file) ){ $this->i++; return true; } return false; } /** * @return int */ #[ReturnTypeWillChange] public function count(){ return count( $this->export() ); } /** * @return Loco_fs_File|null */ #[ReturnTypeWillChange] public function current(){ $i = $this->i; if( is_int($i) && isset($this->cache[$i]) ){ return $this->cache[$i]; } return null; } /** * @return Loco_fs_File|null */ #[ReturnTypeWillChange] public function next(){ if( $this->cached ){ $i = $this->i + 1; if( isset($this->cache[$i]) ){ $this->i = $i; return $this->cache[$i]; } } else { $file = $this->read(); if( $file instanceof Loco_fs_File ) { return $file; } } // else at end of all directory listings $this->i = null; return null; } /** * @return int */ #[ReturnTypeWillChange] public function key(){ return $this->i; } /** * @return bool */ #[ReturnTypeWillChange] public function valid(){ // may be in lazy state after rewind // must do initial read now in case list is empty return is_int($this->i); } /** * @return void */ #[ReturnTypeWillChange] public function rewind(){ if( $this->cached ){ $this->cache->rewind(); $this->i = $this->cache->key(); } else { $this->d = 0; $this->dir = null; $this->cache = new Loco_fs_FileList; // add only root directories that exist $this->subdir = new Loco_fs_FileList; /* @var Loco_fs_Directory $root */ foreach( $this->roots as $root ){ if( $root instanceof Loco_fs_Directory && $root->readable() && ! $this->isExcluded( $root->getPath() ) ){ $this->subdir->add($root); } } if( $this->subdir->offsetExists(0) ){ $this->i = -1; $this->open( $this->subdir->offsetGet(0) ); $this->next(); } else { $this->i = null; $this->subdir = null; $this->cached = true; } } } /** * Test whether internal list has been fully cached in memory * @return bool */ public function isCached(){ return $this->cached; } } FileMode.php 0000644 00000003245 14720714326 0006753 0 ustar 00 <?php /** * Object representing a file's permission bits */ class Loco_fs_FileMode { /** * inode protection mode * @var int */ private $i; /** * Instantiate from integer file mode * @param int */ public function __construct( $mode ){ $this->i = (int) $mode; } /** * @return string */ public function __toString(){ return sprintf('%03o', $this->i & 07777 ); } /** * rwx style friendly formatting * @return string */ public function format(){ $mode = $this->i; $setuid = $mode & 04000; $setgid = $mode & 02000; $sticky = $mode & 01000; return $this->type(). ( $mode & 0400 ? 'r' : '-' ). ( $mode & 0200 ? 'w' : '-' ). ( $mode & 0100 ? ($setuid?'s':'x') : ($setuid?'S':'-') ). ( $mode & 0040 ? 'r' : '-' ). ( $mode & 0020 ? 'w' : '-' ). ( $mode & 0010 ? ($setgid?'s':'x') : ($setgid?'S':'-') ). ( $mode & 0004 ? 'r' : '-' ). ( $mode & 0002 ? 'w' : '-' ). ( $mode & 0001 ? ($sticky?'t':'x') : ($sticky?'T':'-') ); } /** * File type bit field: * http://man7.org/linux/man-pages/man2/stat.2.html */ public function type(){ $mode = $this->i & 0170000; switch( $mode ){ case 0010000: return '-'; case 0040000: return 'd'; case 0120000: return 'l'; case 0140000: return 's'; case 0060000: return 'c'; default: return '-'; } } } Directory.php 0000644 00000001537 14720714326 0007235 0 ustar 00 <?php /** * */ class Loco_fs_Directory extends Loco_fs_File { /** * Recursive flag for internal use * @var bool */ private $r = false; /** * {@inheritDoc} */ public function isDirectory(){ return true; } /** * Set recursive flag for use when traversing directory trees * @param bool $bool * @return Loco_fs_Directory */ public function setRecursive( $bool ){ $this->r = (bool) $bool; return $this; } /** * @return bool */ public function isRecursive(){ return $this->r; } /** * Create this directory for real. * * @throws Loco_error_WriteException * @return Loco_fs_Directory */ public function mkdir(){ $this->getWriteContext()->mkdir(); return $this; } } Link.php 0000644 00000001431 14720714326 0006157 0 ustar 00 <?php /** * */ class Loco_fs_Link extends Loco_fs_File { /** * @var Loco_fs_File */ private $real; /** * {@inheritdoc} */ public function __construct( $path ){ parent::__construct($path); $real = realpath( $this->getPath() ); if( is_string($real) ){ if( is_dir($real) ){ $this->real = new Loco_fs_Directory($real); } else { $this->real = new Loco_fs_File($real); } } } /** * @return Loco_fs_File|null */ public function resolve(){ return $this->real; } /** * {@inheritdoc} */ public function isDirectory(){ return $this->real instanceof Loco_fs_Directory; } } FileListInterface.php 0000644 00000000413 14720714326 0010615 0 ustar 00 <?php interface Loco_fs_FileListInterface extends Countable, Iterator { /** * Add a file uniquely * @param Loco_fs_File * @return bool whether file was added (and didn't already exist) */ public function add( Loco_fs_File $file ); } LocaleFile.php 0000644 00000006615 14720714326 0007272 0 ustar 00 <?php /** * A file with metadata about the locale it relates to */ class Loco_fs_LocaleFile extends Loco_fs_File { /** * @var Loco_Locale|null */ private $locale; /** * @var string */ private $suffix; /** * @var string */ private $prefix; /** * @var string */ private $hash = ''; /** * Lazy handling of localized path info * @return array [ prefix, suffix, hash ] */ public function split(){ if( is_null($this->suffix) ){ // note that `filename` isn't used here because of double extensions (.l10n.php) $parts = explode('-',$this->basename() ); $tail = array_pop($parts); $this->suffix = explode('.',$tail,2)[0]; // handle script hashes for JSONs only if( '.json' === substr($tail,-5) && preg_match('/^[0-9a-f]{32}$/',$this->suffix) ){ $this->hash = $this->suffix; $this->suffix = array_pop($parts); } $this->prefix = implode('-',$parts); // handle situations where unsuffixed name is wrongly taken as the prefix // e.g. "de.po" is valid but "hello.po" is not. // There are still some ambiguous situations, e.g. "foo-bar.po" is valid, but nonsense if( ! $this->prefix && ! $this->getLocale()->isValid() ){ $this->prefix = $this->suffix; $this->suffix = ''; $this->locale = null; } } return [ $this->prefix, $this->suffix, $this->hash ]; } /** * @return Loco_Locale */ public function getLocale(){ if( ! $this->locale ){ if( $tag = $this->getSuffix() ){ $this->locale = Loco_Locale::parse($tag); } else { $this->locale = new Loco_Locale(''); } } return $this->locale; } /** * @param $locale Loco_locale * @return Loco_fs_LocaleFile */ public function cloneLocale( Loco_locale $locale ){ $this->split(); $path = (string) $locale; if( $str = $this->prefix ){ $path = $str.'-'.$path; } if( $str = $this->extension() ){ $path .= '.'.$str; } if( $dir = $this->getParent() ){ $path = $dir->getPath().'/'.$path; } return new Loco_fs_LocaleFile($path); } /** * Get prefix (or stem) from name that comes before locale suffix. * @return string */ public function getPrefix(){ $info = $this->split(); return $info[0]; } /** * Get suffix (or locale code) from name that comes after "-" separator * @return string */ public function getSuffix(){ $info = $this->split(); return $info[1]; } /** * @return string */ public function getHash(){ $info = $this->split(); return $info[2]; } /** * Test if file is suffix only, e.g. "en_US.po" * @return bool */ public function hasSuffixOnly(){ $info = $this->split(); return $info[1] && ! $info[0]; } /** * Test if file is prefix only, e.g. "incorrect.po" * @return bool */ public function hasPrefixOnly(){ $info = $this->split(); return $info[0] && ! $info[1]; } } ext4/sda1/options 0000444 00000000344 14720725046 0007704 0 ustar 00 rw delalloc barrier user_xattr acl resuid=0 resgid=0 errors=continue commit=5 min_batch_time=0 max_batch_time=15000 stripe=0 data=ordered inode_readahead_blks=32 init_itable=10 max_dir_size_kb=0,jqfmt=vfsv0,usrjquota=quota.user ext4/sda1/mb_groups 0000444 00000435162 14720725046 0010220 0 ustar 00 #group: free frags first [ 2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7 2^8 2^9 2^10 2^11 2^12 2^13 ] #0 : 2582 110 10460 [ 98 54 22 12 9 8 6 3 4 0 0 0 0 0 ] #1 : 3816 147 1548 [ 78 95 63 32 26 14 8 5 4 0 0 0 0 0 ] #2 : 5369 262 8192 [ 239 215 183 84 60 25 12 4 1 0 0 0 0 0 ] #3 : 25528 1189 1028 [ 1160 1018 733 315 179 108 55 31 12 0 0 0 0 0 ] #4 : 6755 434 0 [ 435 368 252 106 55 21 10 4 4 0 0 0 0 0 ] #5 : 760 32 1153 [ 42 21 23 9 2 1 3 0 1 0 0 0 0 0 ] #6 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #7 : 596 12 1100 [ 10 9 10 8 3 3 1 2 0 0 0 0 0 0 ] #8 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #9 : 755 32 1181 [ 29 33 17 10 6 1 2 0 1 0 0 0 0 0 ] #10 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #11 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #12 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #13 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #14 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #15 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #16 : 3165 64 8208 [ 55 59 42 43 29 17 9 7 0 0 0 0 0 0 ] #17 : 2447 117 16 [ 93 103 87 45 16 13 4 2 1 0 0 0 0 0 ] #18 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #19 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #20 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #21 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #22 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #23 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #24 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #25 : 183 6 1569 [ 7 2 7 4 3 0 1 0 0 0 0 0 0 0 ] #26 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #27 : 96 2 1914 [ 0 2 3 2 2 1 0 0 0 0 0 0 0 0 ] #28 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #29 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #30 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #31 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #32 : 659 67 8432 [ 73 23 15 8 4 3 4 0 0 0 0 0 0 0 ] #33 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #34 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #35 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #36 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #37 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #38 : 429 27 13833 [ 9 14 10 8 4 1 1 1 0 0 0 0 0 0 ] #39 : 18269 898 133 [ 935 785 533 286 157 84 44 16 5 0 0 0 0 0 ] #40 : 20059 1178 319 [ 1121 1023 719 308 162 96 44 14 5 0 0 0 0 0 ] #41 : 24367 1694 0 [ 1633 1377 1003 466 237 108 38 12 4 0 0 0 0 0 ] #42 : 20860 948 887 [ 962 757 508 278 135 74 44 21 16 0 0 0 0 0 ] #43 : 23117 1366 1664 [ 1309 1178 801 315 164 93 41 25 9 0 0 0 0 0 ] #44 : 26524 1565 0 [ 1592 1368 989 422 217 126 53 17 7 0 0 0 0 0 ] #45 : 28184 1509 16 [ 1558 1241 928 450 236 130 59 26 7 0 0 0 0 0 ] #46 : 22736 1425 0 [ 1434 1199 784 357 211 98 36 20 6 0 0 0 0 0 ] #47 : 28212 1845 0 [ 1884 1580 1054 491 245 125 55 18 5 0 0 0 0 0 ] #48 : 1047 64 8217 [ 57 33 21 21 16 7 3 0 0 0 0 0 0 0 ] #49 : 4339 116 1175 [ 87 74 68 47 34 25 13 10 0 0 0 0 0 0 ] #50 : 26095 448 31 [ 447 376 294 199 125 83 63 51 27 0 0 0 0 0 ] #51 : 25866 785 136 [ 766 694 514 253 157 87 58 35 24 0 0 0 0 0 ] #52 : 27348 1059 0 [ 1074 919 651 323 187 106 57 32 20 0 0 0 0 0 ] #53 : 12286 606 0 [ 612 517 394 179 103 43 34 11 4 0 0 0 0 0 ] #54 : 9388 294 2112 [ 294 267 184 94 74 46 31 9 5 0 0 0 0 0 ] #55 : 21234 1059 0 [ 1080 931 687 359 182 101 40 17 7 0 0 0 0 0 ] #56 : 8065 336 0 [ 247 233 178 118 90 41 22 8 2 0 0 0 0 0 ] #57 : 11709 328 0 [ 281 230 198 154 99 60 35 17 4 0 0 0 0 0 ] #58 : 10789 471 0 [ 463 403 270 145 99 52 27 10 4 0 0 0 0 0 ] #59 : 14803 693 12 [ 625 543 401 224 146 64 41 11 5 0 0 0 0 0 ] #60 : 10344 352 2 [ 350 285 202 99 83 43 22 11 9 0 0 0 0 0 ] #61 : 12892 574 1486 [ 534 491 394 197 118 58 16 11 8 0 0 0 0 0 ] #62 : 16811 620 9 [ 583 538 418 269 126 59 24 14 16 0 0 0 0 0 ] #63 : 17123 644 7 [ 613 541 435 253 147 65 45 14 10 0 0 0 0 0 ] #64 : 3779 77 8277 [ 59 50 29 18 14 12 11 6 5 0 0 0 0 0 ] #65 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #66 : 18706 485 602 [ 402 346 301 159 86 60 35 29 23 0 0 0 0 0 ] #67 : 10441 155 5 [ 137 128 116 94 78 39 41 17 6 0 0 0 0 0 ] #68 : 4086 76 125 [ 64 49 51 45 38 30 18 5 0 0 0 0 0 0 ] #69 : 3278 105 1616 [ 90 68 55 60 39 22 10 3 0 0 0 0 0 0 ] #70 : 12967 607 224 [ 581 489 340 206 103 51 42 17 1 0 0 0 0 0 ] #71 : 18481 968 0 [ 943 731 613 297 173 83 39 20 3 0 0 0 0 0 ] #72 : 15063 849 32 [ 845 725 522 273 147 64 26 11 4 0 0 0 0 0 ] #73 : 20705 1041 8 [ 1009 838 631 363 191 88 43 17 7 0 0 0 0 0 ] #74 : 18821 1007 0 [ 1043 829 626 310 172 70 42 13 7 0 0 0 0 0 ] #75 : 18876 774 0 [ 770 597 464 238 144 69 35 20 15 0 0 0 0 0 ] #76 : 22709 1101 42 [ 1081 928 685 361 180 88 42 25 10 0 0 0 0 0 ] #77 : 16906 727 4 [ 704 627 455 267 141 57 24 16 13 0 0 0 0 0 ] #78 : 15630 535 0 [ 494 470 353 212 113 80 37 16 9 0 0 0 0 0 ] #79 : 18407 887 14 [ 877 759 521 271 151 74 37 20 8 0 0 0 0 0 ] #80 : 1067 89 8540 [ 85 49 33 18 10 6 4 0 0 0 0 0 0 0 ] #81 : 9180 506 1167 [ 480 346 250 124 66 37 25 11 3 0 0 0 0 0 ] #82 : 12258 173 0 [ 168 137 116 111 78 54 35 23 9 0 0 0 0 0 ] #83 : 7952 172 0 [ 150 125 118 103 69 53 34 8 1 0 0 0 0 0 ] #84 : 20611 592 276 [ 597 503 358 211 139 89 51 33 13 0 0 0 0 0 ] #85 : 23980 1226 0 [ 1240 1046 798 418 228 97 43 18 9 0 0 0 0 0 ] #86 : 19522 848 0 [ 864 699 573 315 158 80 29 23 10 0 0 0 0 0 ] #87 : 23979 1550 24 [ 1473 1341 948 484 246 93 38 12 5 0 0 0 0 0 ] #88 : 21922 1321 0 [ 1306 1116 822 399 198 91 31 18 6 0 0 0 0 0 ] #89 : 16008 682 73 [ 658 537 423 235 123 63 35 13 11 0 0 0 0 0 ] #90 : 14972 532 0 [ 498 439 327 182 97 56 31 15 14 0 0 0 0 0 ] #91 : 24747 1198 0 [ 1119 988 727 337 189 87 52 24 15 0 0 0 0 0 ] #92 : 21410 1087 59 [ 1104 931 669 351 172 87 32 18 12 0 0 0 0 0 ] #93 : 17924 874 0 [ 860 754 581 330 162 70 28 9 11 0 0 0 0 0 ] #94 : 15133 459 3024 [ 415 369 271 162 91 61 28 16 17 0 0 0 0 0 ] #95 : 17960 367 26 [ 354 289 213 142 78 53 43 33 20 0 0 0 0 0 ] #96 : 1529 54 9072 [ 57 28 20 11 14 14 7 1 0 0 0 0 0 0 ] #97 : 47 20 766 [ 13 7 1 2 0 0 0 0 0 0 0 0 0 0 ] #98 : 3075 626 712 [ 403 204 128 97 31 11 2 0 0 0 0 0 0 0 ] #99 : 7171 288 46 [ 243 148 64 47 29 23 19 16 6 0 0 0 0 0 ] #100 : 4674 121 39 [ 112 89 74 47 28 16 11 8 4 0 0 0 0 0 ] #101 : 12445 224 135 [ 209 192 139 106 75 43 39 12 15 0 0 0 0 0 ] #102 : 17264 202 71 [ 198 167 141 111 87 68 51 28 19 0 0 0 0 0 ] #103 : 6720 82 640 [ 66 69 63 53 39 39 22 12 4 0 0 0 0 0 ] #104 : 6221 158 1763 [ 83 5 2 3 55 59 20 16 0 0 0 0 0 0 ] #105 : 10043 132 0 [ 131 102 91 86 63 45 37 18 6 0 0 0 0 0 ] #106 : 10591 139 1079 [ 119 128 96 83 61 38 25 24 9 0 0 0 0 0 ] #107 : 14785 210 0 [ 185 182 159 120 80 47 48 17 18 0 0 0 0 0 ] #108 : 11412 263 470 [ 240 212 161 101 57 40 21 15 15 0 0 0 0 0 ] #109 : 11027 372 0 [ 319 318 232 127 60 28 18 16 12 0 0 0 0 0 ] #110 : 9924 367 125 [ 388 296 222 149 67 41 20 9 8 0 0 0 0 0 ] #111 : 8371 253 150 [ 229 201 173 117 72 47 18 6 6 0 0 0 0 0 ] #112 : 3949 58 9080 [ 59 27 27 28 13 9 7 2 3 1 1 0 0 0 ] #113 : 718 266 296 [ 210 58 28 5 5 3 1 0 0 0 0 0 0 0 ] #114 : 5395 221 135 [ 227 150 77 48 39 31 18 9 1 0 0 0 0 0 ] #115 : 13829 377 212 [ 355 297 238 167 88 55 32 16 13 0 0 0 0 0 ] #116 : 14430 318 91 [ 282 278 224 133 97 61 37 21 12 0 0 0 0 0 ] #117 : 3234 125 444 [ 112 107 69 31 19 9 4 4 4 0 0 0 0 0 ] #118 : 6360 243 23 [ 232 190 147 93 54 33 11 8 3 0 0 0 0 0 ] #119 : 13947 507 520 [ 527 388 275 161 97 64 32 16 10 0 0 0 0 0 ] #120 : 3706 208 608 [ 170 160 122 65 36 21 7 4 0 0 0 0 0 0 ] #121 : 9500 423 6144 [ 388 368 296 147 66 35 26 11 3 0 0 0 0 0 ] #122 : 15821 651 232 [ 627 605 394 235 118 68 33 14 10 0 0 0 0 0 ] #123 : 7488 556 3184 [ 546 449 309 149 64 19 19 6 0 0 0 0 0 0 ] #124 : 10159 332 0 [ 337 287 212 126 66 34 18 14 9 0 0 0 0 0 ] #125 : 11086 413 1096 [ 416 353 267 166 79 43 17 16 7 0 0 0 0 0 ] #126 : 15655 614 10 [ 579 564 413 239 113 58 39 13 10 0 0 0 0 0 ] #127 : 17159 810 0 [ 737 705 533 290 148 72 34 13 8 0 0 0 0 0 ] #128 : 2759 81 8624 [ 67 50 50 37 31 20 11 2 0 0 0 0 0 0 ] #129 : 427 313 1646 [ 253 77 3 1 0 0 0 0 0 0 0 0 0 0 ] #130 : 6214 403 21347 [ 386 154 112 70 54 32 13 8 3 0 0 0 0 0 ] #131 : 16398 225 72 [ 216 197 191 136 83 58 34 25 21 0 0 0 0 0 ] #132 : 2064 32 16106 [ 32 22 15 11 11 8 6 4 2 0 0 0 0 0 ] #133 : 19541 291 150 [ 281 266 212 143 108 71 49 35 20 0 0 0 0 0 ] #134 : 28353 283 0 [ 279 255 191 160 135 96 63 51 38 0 0 0 0 0 ] #135 : 17562 146 162 [ 136 125 116 107 99 84 47 39 14 0 0 0 0 0 ] #136 : 22310 390 48 [ 366 350 315 232 157 116 56 41 12 0 0 0 0 0 ] #137 : 30870 349 0 [ 342 288 266 215 166 140 79 61 28 0 0 0 0 0 ] #138 : 20599 317 0 [ 309 241 218 181 137 106 74 34 11 0 0 0 0 0 ] #139 : 23695 249 2 [ 235 222 202 182 135 103 63 44 22 0 0 0 0 0 ] #140 : 31346 387 0 [ 380 363 310 285 208 137 87 53 26 0 0 0 0 0 ] #141 : 15918 202 166 [ 204 163 161 135 118 74 45 31 10 0 0 0 0 0 ] #142 : 23097 302 16 [ 263 257 206 211 130 94 68 35 23 0 0 0 0 0 ] #143 : 26665 301 0 [ 263 265 220 212 166 115 69 48 25 0 0 0 0 0 ] #144 : 10296 87 7441 [ 90 71 44 42 39 31 20 18 9 2 1 0 0 0 ] #145 : 921 567 5422 [ 535 103 25 2 4 0 0 0 0 0 0 0 0 0 ] #146 : 14029 505 430 [ 497 108 67 61 49 36 28 27 21 0 0 0 0 0 ] #147 : 27740 333 75 [ 342 307 276 210 164 114 73 46 28 0 0 0 0 0 ] #148 : 25416 289 0 [ 266 261 245 198 143 100 63 50 24 0 0 0 0 0 ] #149 : 28594 312 1 [ 316 275 236 222 153 103 73 48 33 0 0 0 0 0 ] #150 : 24886 206 93 [ 196 185 162 159 120 100 70 44 28 0 0 0 0 0 ] #151 : 29254 396 0 [ 396 319 299 252 171 126 79 49 27 0 0 0 0 0 ] #152 : 30213 371 0 [ 357 366 301 246 186 116 67 47 35 0 0 0 0 0 ] #153 : 30924 406 3 [ 380 354 335 276 181 133 81 49 30 0 0 0 0 0 ] #154 : 23931 409 0 [ 391 350 306 244 163 93 58 37 22 0 0 0 0 0 ] #155 : 28571 326 0 [ 299 296 274 223 158 122 75 40 33 0 0 0 0 0 ] #156 : 26578 500 4 [ 524 467 352 288 196 113 75 39 19 0 0 0 0 0 ] #157 : 29063 291 1536 [ 273 271 234 226 180 111 80 51 29 0 0 0 0 0 ] #158 : 28277 381 0 [ 355 329 316 268 195 132 74 46 23 0 0 0 0 0 ] #159 : 22017 262 1 [ 253 236 209 155 133 88 61 45 18 0 0 0 0 0 ] #160 : 7692 139 8832 [ 122 55 39 21 16 13 13 4 6 1 1 1 0 0 ] #161 : 10570 675 4868 [ 610 150 113 81 79 58 33 12 7 0 0 0 0 0 ] #162 : 24356 310 115 [ 290 295 265 224 155 95 72 34 24 0 0 0 0 0 ] #163 : 25503 268 10 [ 275 230 206 183 139 93 72 43 28 0 0 0 0 0 ] #164 : 24181 214 4 [ 203 203 163 147 121 85 65 43 29 0 0 0 0 0 ] #165 : 26406 445 12 [ 438 390 341 252 185 117 66 37 24 0 0 0 0 0 ] #166 : 26548 385 15 [ 346 329 296 219 173 108 72 38 27 0 0 0 0 0 ] #167 : 22063 246 48 [ 227 180 187 179 116 83 49 37 27 0 0 0 0 0 ] #168 : 26875 359 52 [ 331 294 237 204 133 104 72 44 30 0 0 0 0 0 ] #169 : 29576 327 4 [ 318 309 242 203 166 117 81 51 31 0 0 0 0 0 ] #170 : 28981 321 0 [ 317 300 260 200 151 115 70 50 33 0 0 0 0 0 ] #171 : 28563 303 0 [ 289 269 240 195 170 119 74 47 31 0 0 0 0 0 ] #172 : 19698 164 2 [ 140 131 116 122 92 80 52 46 18 0 0 0 0 0 ] #173 : 20124 247 20 [ 236 202 187 166 118 91 59 37 16 0 0 0 0 0 ] #174 : 9472 115 8 [ 80 64 74 77 60 35 22 22 8 0 0 0 0 0 ] #175 : 3069 43 16 [ 37 32 24 23 20 12 13 5 2 0 0 0 0 0 ] #176 : 3055 81 8320 [ 61 33 30 29 29 22 12 5 0 0 0 0 0 0 ] #177 : 671 50 2188 [ 29 15 7 5 6 6 4 0 0 0 0 0 0 0 ] #178 : 3765 161 248 [ 143 145 115 93 49 28 7 0 0 0 0 0 0 0 ] #179 : 5996 180 2 [ 154 133 116 81 73 37 21 6 0 0 0 0 0 0 ] #180 : 11428 107 0 [ 86 75 76 73 56 40 27 26 12 0 0 0 0 0 ] #181 : 6104 94 4 [ 70 65 72 64 35 16 27 10 4 0 0 0 0 0 ] #182 : 6594 155 10 [ 122 128 118 102 58 45 26 7 0 0 0 0 0 0 ] #183 : 12362 183 46 [ 160 129 112 105 84 49 37 14 14 0 0 0 0 0 ] #184 : 15672 171 16 [ 142 123 129 122 102 60 52 28 13 0 0 0 0 0 ] #185 : 20151 249 1608 [ 231 166 153 152 108 89 52 31 23 0 0 0 0 0 ] #186 : 24175 262 21 [ 253 231 191 187 149 106 69 52 17 0 0 0 0 0 ] #187 : 25039 256 32 [ 241 209 189 149 124 95 66 47 28 0 0 0 0 0 ] #188 : 23647 215 16 [ 201 175 146 166 104 96 69 50 22 0 0 0 0 0 ] #189 : 23776 275 0 [ 244 230 204 176 151 96 74 35 24 0 0 0 0 0 ] #190 : 21785 299 0 [ 263 211 197 161 121 90 66 38 20 0 0 0 0 0 ] #191 : 20122 165 176 [ 128 113 114 108 85 86 56 38 23 0 0 0 0 0 ] #192 : 1037 57 8489 [ 45 28 16 13 12 8 5 0 0 0 0 0 0 0 ] #193 : 12640 758 589 [ 682 221 187 136 69 56 26 14 13 0 0 0 0 0 ] #194 : 24619 369 253 [ 343 332 287 230 173 104 67 38 21 0 0 0 0 0 ] #195 : 22523 212 80 [ 217 177 168 148 124 90 44 35 31 0 0 0 0 0 ] #196 : 25182 278 1 [ 254 248 218 199 153 106 76 42 23 0 0 0 0 0 ] #197 : 27288 237 10 [ 202 191 166 185 135 88 78 54 30 0 0 0 0 0 ] #198 : 22094 201 0 [ 164 167 143 154 127 91 66 39 22 0 0 0 0 0 ] #199 : 24154 251 41 [ 236 215 204 170 138 107 73 40 23 0 0 0 0 0 ] #200 : 25570 238 0 [ 214 194 170 140 112 82 59 45 36 0 0 0 0 0 ] #201 : 24305 239 0 [ 211 191 178 149 93 81 53 46 33 0 0 0 0 0 ] #202 : 30096 294 10 [ 284 250 226 185 169 123 67 59 33 0 0 0 0 0 ] #203 : 28301 296 8 [ 279 235 190 203 117 98 75 52 34 0 0 0 0 0 ] #204 : 25958 212 8 [ 212 179 187 150 117 88 67 43 35 0 0 0 0 0 ] #205 : 27395 345 16 [ 309 285 251 221 158 123 62 44 30 0 0 0 0 0 ] #206 : 26973 297 6 [ 269 260 224 221 172 129 74 47 23 0 0 0 0 0 ] #207 : 24304 405 5 [ 396 330 284 206 145 91 44 43 27 0 0 0 0 0 ] #208 : 434 10 9984 [ 4 1 3 2 5 2 4 0 0 0 0 0 0 0 ] #209 : 0 0 21306 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #210 : 190 24 9735 [ 26 14 8 5 2 1 0 0 0 0 0 0 0 0 ] #211 : 193 32 3943 [ 13 26 6 5 2 1 0 0 0 0 0 0 0 0 ] #212 : 347 132 30 [ 115 40 28 3 1 0 0 0 0 0 0 0 0 0 ] #213 : 390 189 58 [ 172 67 9 4 1 0 0 0 0 0 0 0 0 0 ] #214 : 331 142 51 [ 129 65 16 1 0 0 0 0 0 0 0 0 0 0 ] #215 : 945 150 16 [ 133 84 53 26 12 1 0 0 0 0 0 0 0 0 ] #216 : 13519 298 32 [ 277 251 203 171 120 84 55 11 4 0 0 0 0 0 ] #217 : 23547 401 2 [ 355 342 291 234 185 128 78 36 11 0 0 0 0 0 ] #218 : 24044 374 8 [ 364 296 260 240 152 109 60 35 23 0 0 0 0 0 ] #219 : 21967 483 520 [ 479 412 374 282 167 97 56 29 15 0 0 0 0 0 ] #220 : 25554 414 2275 [ 400 357 324 277 218 125 60 33 21 0 0 0 0 0 ] #221 : 24830 536 0 [ 538 478 388 309 219 136 63 32 13 0 0 0 0 0 ] #222 : 27606 345 16 [ 336 323 282 235 168 102 76 46 27 0 0 0 0 0 ] #223 : 27780 397 0 [ 356 332 302 242 176 136 81 42 23 0 0 0 0 0 ] #224 : 5104 62 9232 [ 42 51 50 29 25 17 4 0 1 0 1 1 0 0 ] #225 : 12875 425 6928 [ 265 271 177 114 99 55 25 19 12 0 0 0 0 0 ] #226 : 15402 188 48 [ 176 145 112 119 92 57 48 28 14 0 0 0 0 0 ] #227 : 22776 277 5 [ 242 243 214 181 136 97 62 38 22 0 0 0 0 0 ] #228 : 25059 367 0 [ 351 302 244 213 139 114 71 40 23 0 0 0 0 0 ] #229 : 22779 338 1 [ 309 295 256 211 156 101 58 34 21 0 0 0 0 0 ] #230 : 26615 478 20 [ 453 403 347 294 195 154 90 37 12 0 0 0 0 0 ] #231 : 26450 388 80 [ 374 318 288 238 195 118 72 41 22 0 0 0 0 0 ] #232 : 24312 272 26 [ 242 207 178 164 148 92 73 41 25 0 0 0 0 0 ] #233 : 21394 457 12 [ 452 343 308 242 164 92 52 30 17 0 0 0 0 0 ] #234 : 26508 307 28 [ 272 276 221 204 162 113 75 37 29 0 0 0 0 0 ] #235 : 24887 394 12 [ 373 333 272 205 170 119 80 34 20 0 0 0 0 0 ] #236 : 26038 496 16 [ 478 420 358 289 173 119 59 39 22 0 0 0 0 0 ] #237 : 28640 711 16 [ 716 568 491 363 236 141 67 39 17 0 0 0 0 0 ] #238 : 26912 579 16 [ 604 482 424 306 209 122 58 34 23 0 0 0 0 0 ] #239 : 26445 506 0 [ 477 432 360 284 207 113 60 37 23 0 0 0 0 0 ] #240 : 1940 50 9792 [ 38 27 26 28 21 15 7 2 0 0 0 0 0 0 ] #241 : 1599 267 572 [ 201 139 80 24 14 4 2 1 0 0 0 0 0 0 ] #242 : 15800 307 54 [ 294 237 194 140 101 68 34 30 13 0 0 0 0 0 ] #243 : 10039 315 1055 [ 317 259 201 164 95 56 23 8 5 0 0 0 0 0 ] #244 : 27950 510 8 [ 488 411 364 304 218 162 86 37 15 0 0 0 0 0 ] #245 : 23052 479 17 [ 464 384 325 259 165 98 54 30 21 0 0 0 0 0 ] #246 : 19910 224 8 [ 214 194 169 139 113 77 53 33 22 0 0 0 0 0 ] #247 : 20307 208 2 [ 179 178 167 134 123 90 50 32 23 0 0 0 0 0 ] #248 : 8430 144 0 [ 120 83 60 42 43 21 19 13 13 0 0 0 0 0 ] #249 : 21253 388 0 [ 387 317 232 179 141 102 45 34 20 0 0 0 0 0 ] #250 : 12911 207 58 [ 189 191 167 121 89 64 35 17 11 0 0 0 0 0 ] #251 : 18791 193 0 [ 205 171 137 106 85 68 44 36 23 0 0 0 0 0 ] #252 : 26668 413 2 [ 382 335 324 268 196 131 74 41 19 0 0 0 0 0 ] #253 : 8396 84 322 [ 56 56 55 55 39 25 20 16 11 0 0 0 0 0 ] #254 : 28698 524 4 [ 522 438 363 289 191 104 66 49 26 0 0 0 0 0 ] #255 : 24892 700 11 [ 716 608 502 377 251 123 40 26 16 0 0 0 0 0 ] #256 : 5867 58 9128 [ 49 37 24 28 21 13 7 1 2 1 1 1 0 0 ] #257 : 7602 272 6655 [ 238 130 168 134 83 56 15 8 1 0 0 0 0 0 ] #258 : 19462 220 0 [ 192 163 160 134 129 80 41 36 21 0 0 0 0 0 ] #259 : 20918 355 0 [ 326 292 260 193 143 95 53 32 18 0 0 0 0 0 ] #260 : 29103 418 3 [ 391 368 320 227 193 117 72 49 28 0 0 0 0 0 ] #261 : 21311 299 1 [ 279 250 243 183 153 69 56 31 23 0 0 0 0 0 ] #262 : 23431 431 1024 [ 427 340 275 211 135 97 57 29 27 0 0 0 0 0 ] #263 : 21749 225 20 [ 203 169 152 143 98 75 68 39 24 0 0 0 0 0 ] #264 : 28468 491 0 [ 472 456 369 279 189 118 71 38 28 0 0 0 0 0 ] #265 : 16295 215 1028 [ 217 175 152 102 94 56 36 28 20 0 0 0 0 0 ] #266 : 25699 555 8 [ 521 451 375 305 213 111 61 34 20 0 0 0 0 0 ] #267 : 11404 130 5 [ 108 98 103 94 63 55 30 25 8 0 0 0 0 0 ] #268 : 15486 134 24 [ 114 104 101 87 77 57 34 25 22 0 0 0 0 0 ] #269 : 10685 90 8 [ 65 58 56 59 45 22 21 23 16 0 0 0 0 0 ] #270 : 9298 76 41 [ 54 48 49 45 41 24 20 16 15 0 0 0 0 0 ] #271 : 10531 100 13 [ 71 82 66 60 53 26 25 17 16 0 0 0 0 0 ] #272 : 604 48 8894 [ 32 28 17 16 4 4 2 0 0 0 0 0 0 0 ] #273 : 15548 441 1374 [ 284 296 246 217 127 72 39 18 11 0 0 0 0 0 ] #274 : 20694 429 0 [ 414 356 322 247 185 89 56 24 15 0 0 0 0 0 ] #275 : 25841 427 0 [ 389 352 319 262 188 114 68 39 21 0 0 0 0 0 ] #276 : 11935 118 92 [ 113 91 78 70 47 43 37 21 14 0 0 0 0 0 ] #277 : 10715 87 40 [ 73 75 69 69 54 47 32 21 10 0 0 0 0 0 ] #278 : 15078 139 14 [ 124 113 84 83 70 52 43 36 14 0 0 0 0 0 ] #279 : 8274 153 16 [ 140 111 104 67 51 48 30 11 5 0 0 0 0 0 ] #280 : 13648 161 8 [ 140 118 112 89 61 62 47 22 13 0 0 0 0 0 ] #281 : 12556 123 56 [ 108 100 92 79 65 43 42 22 13 0 0 0 0 0 ] #282 : 9601 139 16 [ 143 121 100 82 60 55 37 16 4 0 0 0 0 0 ] #283 : 15752 132 62 [ 108 112 81 81 61 49 44 27 22 0 0 0 0 0 ] #284 : 5530 150 214 [ 134 116 111 86 70 37 19 4 0 0 0 0 0 0 ] #285 : 7494 154 152 [ 138 122 110 90 78 47 22 14 0 0 0 0 0 0 ] #286 : 22208 191 4 [ 154 149 139 106 84 64 53 40 33 0 0 0 0 0 ] #287 : 7785 105 130 [ 93 96 81 65 48 38 27 9 7 0 0 0 0 0 ] #288 : 2475 65 9140 [ 55 32 25 24 17 12 8 3 0 1 0 0 0 0 ] #289 : 16410 278 1008 [ 214 218 176 122 104 68 42 29 15 0 0 0 0 0 ] #290 : 14371 127 8 [ 105 93 74 59 48 46 31 27 22 0 0 0 0 0 ] #291 : 8929 81 369 [ 59 53 47 46 45 30 28 17 10 0 0 0 0 0 ] #292 : 17305 149 16 [ 135 129 112 78 68 63 39 36 22 0 0 0 0 0 ] #293 : 14148 170 16 [ 146 149 120 97 80 47 43 30 12 0 0 0 0 0 ] #294 : 10892 233 8 [ 216 208 177 128 91 57 28 13 7 0 0 0 0 0 ] #295 : 11669 107 1 [ 101 96 72 66 46 39 32 23 14 0 0 0 0 0 ] #296 : 8937 111 46 [ 99 91 84 72 58 39 37 9 8 0 0 0 0 0 ] #297 : 10632 221 80 [ 194 185 137 88 71 46 33 10 11 0 0 0 0 0 ] #298 : 26157 270 17 [ 263 253 197 169 137 82 56 40 38 0 0 0 0 0 ] #299 : 24873 370 0 [ 347 329 265 209 155 95 62 45 23 0 0 0 0 0 ] #300 : 27568 388 0 [ 378 355 268 194 133 93 69 46 33 0 0 0 0 0 ] #301 : 29525 381 13 [ 365 346 297 228 165 123 75 46 32 0 0 0 0 0 ] #302 : 26350 270 14 [ 260 251 207 163 128 101 70 53 27 0 0 0 0 0 ] #303 : 22741 223 1 [ 203 189 166 157 111 85 66 38 26 0 0 0 0 0 ] #304 : 998 47 8920 [ 32 27 18 13 8 7 4 1 0 0 0 0 0 0 ] #305 : 19932 607 2659 [ 494 435 336 231 163 109 41 26 13 0 0 0 0 0 ] #306 : 25432 762 8 [ 730 623 572 442 282 156 67 22 4 0 0 0 0 0 ] #307 : 22664 267 0 [ 248 214 187 155 114 72 48 36 32 0 0 0 0 0 ] #308 : 24709 351 656 [ 337 312 237 190 136 113 68 37 25 0 0 0 0 0 ] #309 : 25326 308 49 [ 296 283 226 167 121 92 73 45 27 0 0 0 0 0 ] #310 : 20684 251 90 [ 236 236 170 128 94 72 58 42 21 0 0 0 0 0 ] #311 : 17644 258 384 [ 246 235 190 135 115 84 61 32 10 0 0 0 0 0 ] #312 : 25605 334 107 [ 319 299 268 216 172 118 74 41 21 0 0 0 0 0 ] #313 : 27769 380 1 [ 363 349 281 216 167 124 89 44 23 0 0 0 0 0 ] #314 : 15308 205 3 [ 190 173 155 111 89 62 44 25 15 0 0 0 0 0 ] #315 : 23500 192 111 [ 184 170 120 86 75 56 48 51 36 0 0 0 0 0 ] #316 : 12785 157 90 [ 125 116 117 93 77 46 43 25 10 0 0 0 0 0 ] #317 : 11809 135 8 [ 103 93 90 75 68 42 37 23 11 0 0 0 0 0 ] #318 : 17857 181 18 [ 155 157 131 88 90 54 41 37 22 0 0 0 0 0 ] #319 : 23044 173 70 [ 154 141 102 81 67 48 48 44 40 0 0 0 0 0 ] #320 : 8533 117 8205 [ 97 38 26 16 6 15 6 4 2 2 1 0 1 0 ] #321 : 10914 362 9060 [ 262 34 182 164 138 76 25 8 5 0 0 0 0 0 ] #322 : 15166 174 41 [ 134 116 106 101 78 41 38 31 18 0 0 0 0 0 ] #323 : 13050 120 15 [ 88 73 74 69 60 42 41 23 16 0 0 0 0 0 ] #324 : 6739 153 42 [ 109 93 89 85 76 35 30 9 0 0 0 0 0 0 ] #325 : 9580 190 4 [ 110 95 104 112 68 13 37 26 3 0 0 0 0 0 ] #326 : 7890 179 0 [ 108 121 95 103 56 14 20 15 7 0 0 0 0 0 ] #327 : 6181 150 20 [ 89 92 89 90 66 16 19 8 4 0 0 0 0 0 ] #328 : 7558 190 4 [ 112 101 101 117 79 13 8 11 9 0 0 0 0 0 ] #329 : 13197 184 56 [ 151 157 113 69 55 39 32 19 20 0 0 0 0 0 ] #330 : 4749 75 2 [ 55 51 42 39 35 17 13 9 4 0 0 0 0 0 ] #331 : 7452 110 5 [ 80 70 26 27 32 26 21 13 10 0 0 0 0 0 ] #332 : 20090 362 32 [ 324 281 205 112 75 53 46 39 26 0 0 0 0 0 ] #333 : 8276 158 8 [ 130 115 105 55 35 31 24 13 9 0 0 0 0 0 ] #334 : 24126 379 16 [ 360 309 223 122 90 82 55 43 32 0 0 0 0 0 ] #335 : 21385 243 134 [ 203 199 154 121 86 65 58 36 29 0 0 0 0 0 ] #336 : 21126 217 8224 [ 180 99 59 36 18 11 16 11 5 1 1 1 1 1 ] #337 : 8895 390 270 [ 183 176 150 110 94 54 25 10 3 0 0 0 0 0 ] #338 : 24907 392 0 [ 371 338 237 138 103 74 52 43 35 0 0 0 0 0 ] #339 : 22106 337 3 [ 322 262 203 118 71 68 45 34 35 0 0 0 0 0 ] #340 : 23808 313 2 [ 306 271 208 118 88 66 52 46 33 0 0 0 0 0 ] #341 : 24377 390 12 [ 373 326 242 140 119 85 58 35 33 0 0 0 0 0 ] #342 : 18861 205 1 [ 177 172 147 103 86 68 51 31 24 0 0 0 0 0 ] #343 : 26137 299 1033 [ 281 240 200 148 118 78 61 46 36 0 0 0 0 0 ] #344 : 31248 395 9 [ 420 326 268 158 128 106 76 49 44 0 0 0 0 0 ] #345 : 26265 301 8 [ 275 271 202 166 113 80 62 51 33 0 0 0 0 0 ] #346 : 11841 142 0 [ 115 127 122 109 80 56 32 19 10 0 0 0 0 0 ] #347 : 19520 406 20 [ 372 334 246 175 132 87 51 30 16 0 0 0 0 0 ] #348 : 20361 450 10 [ 453 366 306 206 141 91 56 25 17 0 0 0 0 0 ] #349 : 30284 482 27 [ 448 426 370 270 176 150 89 42 26 0 0 0 0 0 ] #350 : 29786 719 32 [ 698 614 457 288 201 141 88 49 16 0 0 0 0 0 ] #351 : 26408 424 8 [ 406 367 299 191 125 102 68 43 29 0 0 0 0 0 ] #352 : 8411 134 8198 [ 99 70 45 27 12 17 18 10 8 3 1 0 0 0 ] #353 : 17825 679 4 [ 359 179 191 189 173 99 55 24 9 0 0 0 0 0 ] #354 : 21335 297 204 [ 265 245 215 153 122 77 64 28 25 0 0 0 0 0 ] #355 : 15356 187 0 [ 168 166 138 110 81 69 45 31 12 0 0 0 0 0 ] #356 : 26853 571 16 [ 543 499 418 301 211 140 69 36 17 0 0 0 0 0 ] #357 : 25834 330 24 [ 324 309 275 210 174 140 88 40 16 0 0 0 0 0 ] #358 : 21173 249 0 [ 239 219 204 164 134 99 66 29 20 0 0 0 0 0 ] #359 : 27393 318 0 [ 303 293 266 208 148 123 73 40 30 0 0 0 0 0 ] #360 : 25377 322 1036 [ 301 286 234 168 155 103 71 47 23 0 0 0 0 0 ] #361 : 15209 278 0 [ 267 253 223 163 145 80 49 19 7 0 0 0 0 0 ] #362 : 27355 298 0 [ 271 260 221 170 142 111 81 54 25 0 0 0 0 0 ] #363 : 18225 150 0 [ 121 126 119 80 68 49 40 34 28 0 0 0 0 0 ] #364 : 11873 155 40 [ 135 141 120 100 84 46 35 20 10 0 0 0 0 0 ] #365 : 20180 408 16 [ 402 373 294 196 134 72 67 35 12 0 0 0 0 0 ] #366 : 24751 346 192 [ 339 302 260 166 128 108 65 40 26 0 0 0 0 0 ] #367 : 16838 215 24 [ 192 177 133 118 88 77 61 37 9 0 0 0 0 0 ] #368 : 9665 97 8256 [ 61 46 30 18 12 5 5 3 4 2 2 2 0 0 ] #369 : 7252 469 746 [ 374 221 159 113 56 21 14 7 6 0 0 0 0 0 ] #370 : 18890 319 2 [ 322 286 199 146 110 68 59 31 17 0 0 0 0 0 ] #371 : 28761 462 0 [ 409 388 286 194 129 103 79 57 28 0 0 0 0 0 ] #372 : 27833 429 8 [ 409 372 300 177 140 118 84 57 21 0 0 0 0 0 ] #373 : 28960 514 10 [ 524 428 307 198 140 122 93 51 24 0 0 0 0 0 ] #374 : 25349 633 3 [ 643 513 356 194 146 110 72 42 19 0 0 0 0 0 ] #375 : 29639 429 28 [ 429 369 292 209 166 118 76 50 31 0 0 0 0 0 ] #376 : 24467 422 0 [ 397 355 300 192 153 108 72 41 19 0 0 0 0 0 ] #377 : 29318 479 18 [ 474 426 358 210 159 124 97 47 24 0 0 0 0 0 ] #378 : 28625 467 0 [ 487 395 313 206 178 127 78 50 24 0 0 0 0 0 ] #379 : 27252 602 1 [ 584 490 318 200 140 95 76 43 28 0 0 0 0 0 ] #380 : 29192 326 1 [ 322 279 252 183 145 121 93 57 25 0 0 0 0 0 ] #381 : 20157 209 11 [ 211 177 168 141 108 92 61 30 21 0 0 0 0 0 ] #382 : 29232 612 12 [ 564 536 359 190 130 103 85 50 29 0 0 0 0 0 ] #383 : 26757 792 16 [ 763 649 436 187 129 96 67 40 27 0 0 0 0 0 ] #384 : 1540 103 8192 [ 82 35 17 13 6 3 8 2 1 0 0 0 0 0 ] #385 : 14188 323 16 [ 162 159 115 54 53 36 35 35 16 0 0 0 0 0 ] #386 : 25947 480 668 [ 473 397 274 146 113 72 62 40 36 0 0 0 0 0 ] #387 : 28982 494 22 [ 486 438 309 194 134 111 79 54 28 0 0 0 0 0 ] #388 : 26822 571 0 [ 558 504 372 219 164 128 85 41 18 0 0 0 0 0 ] #389 : 19056 314 0 [ 290 299 260 137 94 70 44 30 22 0 0 0 0 0 ] #390 : 19921 629 32 [ 627 551 444 252 154 99 51 23 10 0 0 0 0 0 ] #391 : 21649 352 235 [ 335 305 274 219 150 107 74 33 12 0 0 0 0 0 ] #392 : 25204 727 3 [ 680 652 501 292 194 137 72 39 7 0 0 0 0 0 ] #393 : 27198 569 5 [ 558 490 373 269 190 133 80 41 17 0 0 0 0 0 ] #394 : 23586 544 3648 [ 542 472 383 257 177 112 79 25 15 0 0 0 0 0 ] #395 : 27764 819 0 [ 790 737 549 333 234 150 67 37 12 0 0 0 0 0 ] #396 : 20331 704 8 [ 715 626 459 278 176 107 58 22 6 0 0 0 0 0 ] #397 : 27294 920 3 [ 932 811 601 310 209 148 86 31 9 0 0 0 0 0 ] #398 : 26630 1220 0 [ 1222 1006 689 292 204 122 86 30 7 0 0 0 0 0 ] #399 : 20315 711 72 [ 725 621 421 193 123 91 52 30 12 0 0 0 0 0 ] #400 : 1529 65 8958 [ 55 35 29 23 17 10 4 2 0 0 0 0 0 0 ] #401 : 23000 886 15 [ 802 513 427 299 203 108 58 32 10 0 0 0 0 0 ] #402 : 22970 790 0 [ 820 717 535 264 147 89 54 33 14 0 0 0 0 0 ] #403 : 21773 895 0 [ 901 810 511 231 130 101 65 24 11 0 0 0 0 0 ] #404 : 27556 1292 6 [ 1254 1119 748 318 162 112 79 37 10 0 0 0 0 0 ] #405 : 25781 993 11 [ 1029 806 599 261 146 102 56 46 14 0 0 0 0 0 ] #406 : 26055 1498 16 [ 1503 1252 844 302 152 112 54 29 12 0 0 0 0 0 ] #407 : 22932 1216 7 [ 1276 1014 627 198 101 89 55 25 17 0 0 0 0 0 ] #408 : 27253 1695 0 [ 1661 1428 960 348 151 102 61 29 11 0 0 0 0 0 ] #409 : 28081 1459 16 [ 1431 1229 842 301 153 121 57 30 18 0 0 0 0 0 ] #410 : 25803 1250 0 [ 1253 1061 705 277 139 110 76 35 9 0 0 0 0 0 ] #411 : 28613 583 40 [ 617 472 381 223 142 103 84 44 28 0 0 0 0 0 ] #412 : 27376 431 0 [ 416 388 316 193 149 116 86 42 25 0 0 0 0 0 ] #413 : 26061 847 78 [ 795 755 559 302 192 129 78 34 10 0 0 0 0 0 ] #414 : 11522 397 6400 [ 320 1 10 121 83 59 31 17 11 0 0 0 0 0 ] #415 : 24294 632 7 [ 658 496 373 206 139 104 78 46 12 0 0 0 0 0 ] #416 : 14347 137 8196 [ 107 76 44 31 16 21 17 11 6 1 2 1 1 0 ] #417 : 25881 1033 88 [ 865 584 478 296 169 103 54 39 20 0 0 0 0 0 ] #418 : 28747 636 0 [ 615 548 517 385 264 138 75 40 13 0 0 0 0 0 ] #419 : 29868 638 540 [ 636 546 487 388 261 159 90 31 16 0 0 0 0 0 ] #420 : 28540 349 152 [ 324 318 261 231 181 145 104 42 20 0 0 0 0 0 ] #421 : 29293 537 1 [ 513 462 424 356 267 161 93 38 12 0 0 0 0 0 ] #422 : 29261 720 0 [ 685 658 533 451 307 185 95 24 6 0 0 0 0 0 ] #423 : 26991 791 0 [ 771 706 594 440 304 179 64 21 6 0 0 0 0 0 ] #424 : 10322 306 40 [ 294 224 199 162 104 52 35 13 1 0 0 0 0 0 ] #425 : 11065 244 454 [ 213 200 169 150 88 52 36 21 2 0 0 0 0 0 ] #426 : 14893 322 23 [ 291 249 238 170 91 81 39 23 9 0 0 0 0 0 ] #427 : 7313 134 2 [ 107 101 81 65 43 27 22 17 4 0 0 0 0 0 ] #428 : 20135 412 8 [ 389 343 275 231 137 85 51 28 17 0 0 0 0 0 ] #429 : 18139 454 2 [ 429 379 286 204 124 93 52 24 11 0 0 0 0 0 ] #430 : 13438 231 0 [ 232 181 139 102 65 60 47 25 9 0 0 0 0 0 ] #431 : 19005 480 24 [ 413 358 269 142 109 79 50 36 14 0 0 0 0 0 ] #432 : 1785 22 14336 [ 7 7 11 9 9 7 10 3 1 0 0 0 0 0 ] #433 : 15021 667 0 [ 559 397 311 257 178 89 35 9 5 0 0 0 0 0 ] #434 : 29635 539 156 [ 547 470 409 326 222 128 78 42 23 0 0 0 0 0 ] #435 : 30007 795 0 [ 811 716 607 433 275 172 73 35 11 0 0 0 0 0 ] #436 : 30910 581 2 [ 576 521 457 355 291 192 82 39 14 0 0 0 0 0 ] #437 : 30411 610 0 [ 593 525 438 357 258 174 92 41 13 0 0 0 0 0 ] #438 : 30559 392 0 [ 379 358 324 267 231 158 94 44 22 0 0 0 0 0 ] #439 : 29876 326 58 [ 336 280 267 241 200 130 81 47 29 0 0 0 0 0 ] #440 : 28585 395 0 [ 383 367 327 282 222 152 100 37 17 0 0 0 0 0 ] #441 : 28511 544 0 [ 561 407 392 308 256 160 95 35 13 0 0 0 0 0 ] #442 : 28771 850 0 [ 831 746 646 469 295 189 72 27 5 0 0 0 0 0 ] #443 : 27469 605 17 [ 617 518 472 369 301 191 79 23 8 0 0 0 0 0 ] #444 : 26366 723 0 [ 698 616 553 376 275 163 90 20 5 0 0 0 0 0 ] #445 : 16063 405 548 [ 383 348 312 247 165 91 47 17 4 0 0 0 0 0 ] #446 : 19156 615 0 [ 588 498 431 317 224 118 41 10 8 0 0 0 0 0 ] #447 : 15946 367 0 [ 328 299 237 195 146 82 42 22 8 0 0 0 0 0 ] #448 : 1161 118 8252 [ 95 47 25 19 11 3 7 0 0 0 0 0 0 0 ] #449 : 1544 382 5404 [ 306 43 44 28 17 15 0 0 0 0 0 0 0 0 ] #450 : 18515 562 2029 [ 513 465 408 330 234 105 37 20 3 0 0 0 0 0 ] #451 : 26971 543 95 [ 525 475 396 319 225 135 88 41 10 0 0 0 0 0 ] #452 : 29602 712 8 [ 704 619 537 403 259 151 62 39 17 0 0 0 0 0 ] #453 : 26020 528 16 [ 512 480 419 331 244 116 77 34 13 0 0 0 0 0 ] #454 : 21544 299 4 [ 282 275 228 201 153 102 59 30 19 0 0 0 0 0 ] #455 : 25296 380 152 [ 336 312 262 231 180 128 66 36 22 0 0 0 0 0 ] #456 : 24615 249 40 [ 233 209 195 180 137 111 74 48 20 0 0 0 0 0 ] #457 : 24952 285 5 [ 272 230 207 178 155 121 74 47 19 0 0 0 0 0 ] #458 : 20846 443 32 [ 404 283 241 166 139 92 58 36 16 0 0 0 0 0 ] #459 : 26308 304 48 [ 320 260 225 211 190 144 72 43 20 0 0 0 0 0 ] #460 : 22478 409 0 [ 406 354 287 259 180 103 67 34 13 0 0 0 0 0 ] #461 : 21334 450 2 [ 464 413 315 264 164 103 50 33 13 0 0 0 0 0 ] #462 : 28738 689 0 [ 644 623 532 424 299 159 73 27 13 0 0 0 0 0 ] #463 : 26060 470 0 [ 442 425 346 303 220 133 72 39 14 0 0 0 0 0 ] #464 : 10314 83 8326 [ 56 41 30 17 22 19 8 8 7 5 3 0 0 0 ] #465 : 8790 367 2144 [ 276 133 194 174 124 68 18 2 2 0 0 0 0 0 ] #466 : 20169 388 52 [ 355 311 268 221 160 95 70 23 13 0 0 0 0 0 ] #467 : 28779 489 0 [ 487 460 391 316 247 156 100 44 9 0 0 0 0 0 ] #468 : 29149 747 26 [ 721 640 583 444 299 197 83 24 7 0 0 0 0 0 ] #469 : 29011 846 0 [ 805 739 606 424 317 179 78 22 9 0 0 0 0 0 ] #470 : 28509 827 143 [ 823 717 613 473 293 187 68 23 8 0 0 0 0 0 ] #471 : 22449 530 0 [ 537 440 388 309 211 138 62 23 9 0 0 0 0 0 ] #472 : 22181 463 0 [ 471 387 340 263 186 133 46 31 13 0 0 0 0 0 ] #473 : 14130 267 0 [ 250 230 187 154 95 72 33 19 12 0 0 0 0 0 ] #474 : 7991 255 0 [ 261 205 192 131 86 47 15 7 3 0 0 0 0 0 ] #475 : 14355 319 5 [ 303 258 212 142 114 64 36 14 14 0 0 0 0 0 ] #476 : 18546 383 3728 [ 360 329 286 244 162 100 51 16 13 0 0 0 0 0 ] #477 : 9471 231 24 [ 203 194 152 138 96 48 20 14 4 0 0 0 0 0 ] #478 : 13787 196 16 [ 203 170 125 97 64 54 26 25 17 0 0 0 0 0 ] #479 : 24864 582 0 [ 574 389 310 274 191 120 70 36 16 0 0 0 0 0 ] #480 : 2168 27 10304 [ 10 11 14 16 10 12 14 4 0 0 0 0 0 0 ] #481 : 14314 607 8740 [ 534 298 252 206 154 76 44 16 3 0 0 0 0 0 ] #482 : 18892 758 0 [ 716 490 355 248 140 87 45 22 12 0 0 0 0 0 ] #483 : 8376 182 1023 [ 118 39 17 58 42 32 19 9 14 0 0 0 0 0 ] #484 : 19478 566 123 [ 520 483 348 157 103 78 65 33 11 0 0 0 0 0 ] #485 : 14856 299 10 [ 284 242 168 105 74 58 47 27 12 0 0 0 0 0 ] #486 : 24168 432 8 [ 416 350 259 158 111 97 80 50 17 0 0 0 0 0 ] #487 : 27580 726 0 [ 696 618 452 250 161 112 77 48 18 0 0 0 0 0 ] #488 : 24550 714 19 [ 682 610 496 269 177 126 66 36 11 0 0 0 0 0 ] #489 : 24865 641 2048 [ 609 572 450 276 208 141 62 29 14 0 0 0 0 0 ] #490 : 27574 1342 2 [ 1284 1189 876 479 264 150 62 24 2 0 0 0 0 0 ] #491 : 22810 1023 8 [ 972 885 583 231 139 93 63 22 15 0 0 0 0 0 ] #492 : 13337 571 0 [ 513 486 353 189 122 50 36 16 4 0 0 0 0 0 ] #493 : 19470 671 4 [ 674 540 391 245 173 83 55 23 9 0 0 0 0 0 ] #494 : 13405 295 8 [ 287 249 181 135 86 49 35 26 9 0 0 0 0 0 ] #495 : 18220 415 4 [ 396 350 289 184 112 75 51 31 12 0 0 0 0 0 ] #496 : 1953 137 8228 [ 99 51 42 16 9 15 7 3 0 0 0 0 0 0 ] #497 : 634 368 996 [ 358 28 13 3 1 0 2 0 0 0 0 0 0 0 ] #498 : 3833 669 40 [ 663 67 49 39 24 15 8 5 2 0 0 0 0 0 ] #499 : 14254 140 679 [ 130 102 80 68 60 46 28 25 22 0 0 0 0 0 ] #500 : 13918 273 0 [ 234 174 148 115 87 56 39 20 14 0 0 0 0 0 ] #501 : 14460 292 44 [ 254 231 206 155 112 61 34 13 16 0 0 0 0 0 ] #502 : 8700 83 158 [ 76 64 42 29 24 23 19 19 13 0 0 0 0 0 ] #503 : 5225 154 16 [ 119 115 105 89 64 25 20 5 0 0 0 0 0 0 ] #504 : 7406 210 16 [ 182 164 116 78 43 10 11 10 11 0 0 0 0 0 ] #505 : 26587 289 30 [ 269 269 223 179 142 106 76 43 29 0 0 0 0 0 ] #506 : 18098 188 9 [ 184 159 121 91 76 54 46 40 21 0 0 0 0 0 ] #507 : 25414 260 4 [ 242 208 169 128 99 71 60 40 40 0 0 0 0 0 ] #508 : 26607 338 5 [ 331 260 211 144 107 91 67 56 30 0 0 0 0 0 ] #509 : 23155 447 7 [ 427 370 257 160 106 80 59 37 27 0 0 0 0 0 ] #510 : 24568 254 42 [ 248 210 177 143 108 81 63 39 34 0 0 0 0 0 ] #511 : 27642 339 4 [ 336 301 232 160 119 88 63 45 39 0 0 0 0 0 ] #512 : 4468 74 8852 [ 56 42 46 16 15 16 13 7 4 1 0 0 0 0 ] #513 : 2030 185 1768 [ 178 24 25 31 37 13 5 1 0 0 0 0 0 0 ] #514 : 15440 455 508 [ 426 341 251 134 94 56 26 27 15 0 0 0 0 0 ] #515 : 15774 239 601 [ 210 188 153 92 71 61 38 29 18 0 0 0 0 0 ] #516 : 27955 576 6 [ 547 472 338 221 135 116 85 40 27 0 0 0 0 0 ] #517 : 20303 423 43 [ 405 353 272 185 145 93 51 35 14 0 0 0 0 0 ] #518 : 21780 887 0 [ 912 746 516 240 140 77 55 38 9 0 0 0 0 0 ] #519 : 11054 698 0 [ 688 587 392 131 69 39 28 13 3 0 0 0 0 0 ] #520 : 20094 1280 0 [ 1242 1028 701 235 115 77 54 22 6 0 0 0 0 0 ] #521 : 26148 1716 8 [ 1746 1409 904 288 171 102 57 27 10 0 0 0 0 0 ] #522 : 27813 1701 2 [ 1741 1390 885 301 154 119 77 24 12 0 0 0 0 0 ] #523 : 27177 1712 32 [ 1753 1408 906 315 145 98 68 26 13 0 0 0 0 0 ] #524 : 5810 284 8 [ 266 224 162 48 28 19 11 6 6 0 0 0 0 0 ] #525 : 18025 990 2 [ 993 854 561 217 107 75 47 19 7 0 0 0 0 0 ] #526 : 26761 1143 3 [ 1133 952 627 288 154 100 71 34 17 0 0 0 0 0 ] #527 : 23829 771 64 [ 741 644 468 263 160 103 77 31 12 0 0 0 0 0 ] #528 : 1381 17 14720 [ 9 6 6 7 8 8 10 2 0 0 0 0 0 0 ] #529 : 13969 517 100 [ 285 264 225 176 126 88 44 11 7 0 0 0 0 0 ] #530 : 27858 758 0 [ 708 651 576 433 277 149 60 25 15 0 0 0 0 0 ] #531 : 11955 272 2988 [ 251 220 168 112 84 55 23 16 12 0 0 0 0 0 ] #532 : 19635 637 0 [ 611 512 392 198 140 94 64 25 9 0 0 0 0 0 ] #533 : 21661 910 0 [ 915 761 498 226 148 102 59 27 10 0 0 0 0 0 ] #534 : 11838 351 0 [ 338 268 215 101 57 48 33 17 10 0 0 0 0 0 ] #535 : 8223 221 0 [ 193 133 125 92 56 22 13 16 8 0 0 0 0 0 ] #536 : 10568 165 484 [ 134 103 109 60 46 40 26 16 14 0 0 0 0 0 ] #537 : 7437 109 2 [ 111 119 72 52 45 43 19 12 6 0 0 0 0 0 ] #538 : 13830 307 0 [ 306 278 196 131 86 47 37 24 11 0 0 0 0 0 ] #539 : 16228 484 1792 [ 458 435 305 168 107 74 49 26 7 0 0 0 0 0 ] #540 : 17678 248 11 [ 264 225 189 154 112 74 45 32 15 0 0 0 0 0 ] #541 : 13809 375 18 [ 391 321 238 108 69 56 42 26 8 0 0 0 0 0 ] #542 : 16219 289 8 [ 261 219 182 115 97 53 48 31 14 0 0 0 0 0 ] #543 : 11394 438 0 [ 380 379 258 115 73 47 30 11 9 0 0 0 0 0 ] #544 : 1585 84 8320 [ 57 44 20 20 13 9 5 1 1 0 0 0 0 0 ] #545 : 13195 395 240 [ 307 298 225 180 128 63 30 15 8 0 0 0 0 0 ] #546 : 27385 426 128 [ 427 351 304 218 170 117 67 44 27 0 0 0 0 0 ] #547 : 30113 548 0 [ 549 482 394 286 198 146 82 47 22 0 0 0 0 0 ] #548 : 28783 386 0 [ 365 361 316 246 201 160 90 39 21 0 0 0 0 0 ] #549 : 25929 357 75 [ 367 313 284 251 168 131 81 34 21 0 0 0 0 0 ] #550 : 28055 488 0 [ 471 434 359 304 236 176 90 40 10 0 0 0 0 0 ] #551 : 27040 773 10 [ 800 690 581 393 300 156 68 25 8 0 0 0 0 0 ] #552 : 26109 721 0 [ 707 611 533 368 276 155 72 22 9 0 0 0 0 0 ] #553 : 28654 721 76 [ 680 629 533 433 270 147 63 27 18 0 0 0 0 0 ] #554 : 27570 648 0 [ 666 554 437 318 216 124 74 39 17 0 0 0 0 0 ] #555 : 15817 487 0 [ 511 409 380 265 188 83 33 14 5 0 0 0 0 0 ] #556 : 6862 212 0 [ 210 162 122 72 43 31 18 9 5 0 0 0 0 0 ] #557 : 17616 382 14 [ 372 332 241 144 108 64 49 31 14 0 0 0 0 0 ] #558 : 17389 210 0 [ 195 169 142 110 79 62 52 33 18 0 0 0 0 0 ] #559 : 9169 303 0 [ 301 246 134 92 60 36 20 17 6 0 0 0 0 0 ] #560 : 0 0 9505 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #561 : 8302 105 3584 [ 60 45 46 46 31 14 16 14 15 0 0 0 0 0 ] #562 : 8100 175 2162 [ 142 145 95 49 41 25 25 16 7 0 0 0 0 0 ] #563 : 4673 79 0 [ 77 68 51 42 31 27 12 10 2 0 0 0 0 0 ] #564 : 1642 54 0 [ 46 36 27 19 11 6 2 4 1 0 0 0 0 0 ] #565 : 8053 117 2458 [ 83 73 68 56 36 34 17 16 9 0 0 0 0 0 ] #566 : 1677 15 171 [ 9 8 9 10 4 6 4 0 4 0 0 0 0 0 ] #567 : 478 5 5120 [ 2 2 4 3 3 0 0 1 1 0 0 0 0 0 ] #568 : 496 5 20922 [ 0 4 4 3 0 2 2 0 1 0 0 0 0 0 ] #569 : 6214 57 6600 [ 28 31 35 34 27 17 14 12 9 0 0 0 0 0 ] #570 : 4705 69 0 [ 35 35 40 37 27 6 7 8 8 0 0 0 0 0 ] #571 : 7187 194 2948 [ 187 152 108 73 39 34 22 14 3 0 0 0 0 0 ] #572 : 3589 142 8 [ 133 128 96 72 36 24 8 1 1 0 0 0 0 0 ] #573 : 13343 479 480 [ 473 409 311 133 93 60 27 20 8 0 0 0 0 0 ] #574 : 11665 178 0 [ 173 164 127 76 52 42 33 21 12 0 0 0 0 0 ] #575 : 11531 382 4096 [ 389 315 232 102 66 41 32 16 9 0 0 0 0 0 ] #576 : 1853 108 8192 [ 73 54 22 16 19 12 6 1 1 0 0 0 0 0 ] #577 : 21719 320 240 [ 253 221 170 131 104 77 57 42 24 0 0 0 0 0 ] #578 : 17783 565 3 [ 503 476 318 134 76 65 55 28 14 0 0 0 0 0 ] #579 : 11602 270 2048 [ 270 214 146 72 47 35 27 24 12 0 0 0 0 0 ] #580 : 9169 146 32 [ 135 107 93 68 36 31 19 22 9 0 0 0 0 0 ] #581 : 9313 336 0 [ 327 273 202 90 40 32 22 14 8 0 0 0 0 0 ] #582 : 6856 142 4 [ 132 130 80 56 22 9 9 13 11 0 0 0 0 0 ] #583 : 3940 122 3205 [ 62 65 65 60 68 24 8 5 0 0 0 0 0 0 ] #584 : 3772 68 408 [ 30 35 34 38 34 30 9 3 3 0 0 0 0 0 ] #585 : 6370 222 445 [ 116 115 112 135 71 5 4 13 5 0 0 0 0 0 ] #586 : 5623 119 2299 [ 69 61 70 64 50 24 22 3 5 0 0 0 0 0 ] #587 : 6110 143 69 [ 108 83 93 85 43 16 12 10 6 0 0 0 0 0 ] #588 : 3813 43 3630 [ 29 30 27 26 29 10 5 4 7 0 0 0 0 0 ] #589 : 6474 157 2 [ 142 148 87 47 30 23 16 10 7 0 0 0 0 0 ] #590 : 16140 414 5 [ 414 321 265 121 82 65 47 28 12 0 0 0 0 0 ] #591 : 10688 185 0 [ 174 141 108 47 25 22 22 20 17 0 0 0 0 0 ] #592 : 1722 114 8249 [ 92 47 34 17 13 11 3 2 1 0 0 0 0 0 ] #593 : 8552 349 7238 [ 310 91 53 55 51 32 29 21 4 0 0 0 0 0 ] #594 : 5844 181 517 [ 122 95 95 78 63 6 2 5 10 0 0 0 0 0 ] #595 : 9175 242 1685 [ 183 166 153 104 91 26 23 15 6 0 0 0 0 0 ] #596 : 15637 223 332 [ 201 184 169 113 99 68 52 22 14 0 0 0 0 0 ] #597 : 3710 79 47 [ 68 69 52 52 38 29 15 3 0 0 0 0 0 0 ] #598 : 24401 888 0 [ 887 775 553 271 145 111 75 32 11 0 0 0 0 0 ] #599 : 7687 151 0 [ 145 141 93 57 32 29 14 18 7 0 0 0 0 0 ] #600 : 15228 431 0 [ 432 366 272 128 83 72 44 27 8 0 0 0 0 0 ] #601 : 17568 414 0 [ 392 340 296 142 98 72 49 26 15 0 0 0 0 0 ] #602 : 30575 912 0 [ 933 773 530 265 195 138 81 53 17 0 0 0 0 0 ] #603 : 11665 277 0 [ 259 229 183 87 57 43 31 25 8 0 0 0 0 0 ] #604 : 7528 108 0 [ 94 81 64 41 32 17 18 17 9 0 0 0 0 0 ] #605 : 7736 170 2 [ 166 127 109 52 38 29 21 12 8 0 0 0 0 0 ] #606 : 5259 54 0 [ 45 55 38 33 35 25 20 10 3 0 0 0 0 0 ] #607 : 9104 139 8 [ 136 116 70 45 38 32 29 18 9 0 0 0 0 0 ] #608 : 2008 125 8216 [ 98 63 32 11 12 7 6 2 0 1 0 0 0 0 ] #609 : 1764 333 201 [ 246 49 41 41 14 10 2 2 0 0 0 0 0 0 ] #610 : 702 230 1 [ 236 89 14 9 6 2 0 0 0 0 0 0 0 0 ] #611 : 3499 299 18317 [ 303 90 54 30 24 12 14 7 0 0 0 0 0 0 ] #612 : 16638 539 0 [ 502 476 302 147 100 80 41 19 14 0 0 0 0 0 ] #613 : 7986 241 0 [ 236 167 134 86 59 34 25 12 4 0 0 0 0 0 ] #614 : 22777 886 0 [ 841 796 500 247 121 91 60 28 16 0 0 0 0 0 ] #615 : 7657 118 0 [ 99 121 83 55 39 33 20 12 8 0 0 0 0 0 ] #616 : 25785 685 3 [ 679 559 421 210 123 103 66 45 21 0 0 0 0 0 ] #617 : 24892 347 4 [ 350 283 240 153 112 99 79 50 21 0 0 0 0 0 ] #618 : 26184 471 0 [ 458 379 310 196 135 93 68 51 24 0 0 0 0 0 ] #619 : 27516 488 0 [ 472 440 327 179 118 89 68 58 27 0 0 0 0 0 ] #620 : 25293 524 13 [ 515 421 338 181 121 94 69 48 22 0 0 0 0 0 ] #621 : 19554 346 0 [ 344 311 231 110 95 77 54 41 16 0 0 0 0 0 ] #622 : 15776 181 8 [ 186 155 120 80 65 58 44 32 17 0 0 0 0 0 ] #623 : 24383 605 12 [ 569 505 367 193 133 104 74 41 17 0 0 0 0 0 ] #624 : 3172 39 8646 [ 30 35 24 20 16 20 6 4 2 1 0 0 0 0 ] #625 : 12712 242 1280 [ 118 11 91 44 43 63 37 19 17 0 0 0 0 0 ] #626 : 16138 467 0 [ 444 387 270 134 88 67 48 24 12 0 0 0 0 0 ] #627 : 22422 669 3 [ 666 530 392 183 120 96 58 36 17 0 0 0 0 0 ] #628 : 30961 629 14 [ 597 566 398 197 131 105 82 64 28 0 0 0 0 0 ] #629 : 5782 57 7 [ 54 38 19 19 19 16 12 10 10 0 0 0 0 0 ] #630 : 4339 43 0 [ 45 35 26 23 20 17 16 10 3 0 0 0 0 0 ] #631 : 6162 120 32 [ 110 86 82 48 31 24 17 8 7 0 0 0 0 0 ] #632 : 4611 97 5 [ 83 72 54 29 24 17 11 8 5 0 0 0 0 0 ] #633 : 8203 162 0 [ 151 142 122 90 56 31 23 9 8 0 0 0 0 0 ] #634 : 2914 135 5 [ 124 117 91 48 19 11 8 3 1 0 0 0 0 0 ] #635 : 13452 418 0 [ 418 363 271 125 63 46 37 26 8 0 0 0 0 0 ] #636 : 24585 534 2 [ 597 438 326 158 96 88 69 42 25 0 0 0 0 0 ] #637 : 16961 281 0 [ 263 249 190 116 79 44 43 31 20 0 0 0 0 0 ] #638 : 6105 139 0 [ 125 100 97 56 33 16 15 11 6 0 0 0 0 0 ] #639 : 8947 173 4 [ 167 154 138 80 45 27 25 14 9 0 0 0 0 0 ] #640 : 9627 83 8192 [ 53 31 22 22 14 8 5 4 5 3 3 1 0 0 ] #641 : 2132 335 21701 [ 334 101 81 43 20 13 1 1 0 0 0 0 0 0 ] #642 : 15299 529 0 [ 529 427 351 280 162 70 35 11 7 0 0 0 0 0 ] #643 : 4345 63 0 [ 61 42 48 27 15 11 12 5 7 0 0 0 0 0 ] #644 : 15666 234 2 [ 236 199 148 87 67 48 38 28 20 0 0 0 0 0 ] #645 : 12276 260 8 [ 252 230 155 92 62 44 30 16 15 0 0 0 0 0 ] #646 : 9077 321 0 [ 317 306 199 109 73 48 25 11 3 0 0 0 0 0 ] #647 : 6971 197 12 [ 185 183 123 57 46 30 13 9 7 0 0 0 0 0 ] #648 : 9696 271 0 [ 248 250 177 98 60 39 24 9 10 0 0 0 0 0 ] #649 : 13579 345 4 [ 319 310 226 131 84 60 38 13 13 0 0 0 0 0 ] #650 : 12573 276 0 [ 283 251 185 121 86 52 34 22 8 0 0 0 0 0 ] #651 : 9759 202 0 [ 201 159 134 76 64 47 31 10 9 0 0 0 0 0 ] #652 : 9637 259 0 [ 261 220 142 94 64 36 31 11 8 0 0 0 0 0 ] #653 : 13605 349 0 [ 345 316 245 152 98 63 31 18 10 0 0 0 0 0 ] #654 : 15370 500 9 [ 516 403 330 179 98 66 41 15 12 0 0 0 0 0 ] #655 : 9567 282 0 [ 285 269 170 84 66 44 23 13 7 0 0 0 0 0 ] #656 : 3876 70 8200 [ 58 31 23 26 18 15 10 8 4 0 0 0 0 0 ] #657 : 6017 279 594 [ 181 154 136 65 47 36 16 6 3 0 0 0 0 0 ] #658 : 30518 1087 2 [ 1000 969 671 330 185 143 80 39 18 0 0 0 0 0 ] #659 : 7559 274 0 [ 229 255 173 68 37 22 15 10 8 0 0 0 0 0 ] #660 : 14967 659 0 [ 667 556 353 146 85 65 44 14 10 0 0 0 0 0 ] #661 : 3809 144 1 [ 137 138 93 48 21 14 9 4 3 0 0 0 0 0 ] #662 : 13361 470 8 [ 471 395 265 108 62 51 38 22 9 0 0 0 0 0 ] #663 : 28713 854 0 [ 871 749 564 271 160 123 73 52 16 0 0 0 0 0 ] #664 : 19345 510 4 [ 469 416 307 146 96 65 52 34 17 0 0 0 0 0 ] #665 : 13009 577 4 [ 589 490 324 132 74 55 28 20 7 0 0 0 0 0 ] #666 : 15129 615 0 [ 651 471 348 138 78 60 43 24 8 0 0 0 0 0 ] #667 : 25079 736 0 [ 741 601 436 230 148 117 68 41 15 0 0 0 0 0 ] #668 : 14446 370 39 [ 338 308 227 115 71 57 34 19 16 0 0 0 0 0 ] #669 : 15330 260 4096 [ 250 226 167 103 77 72 44 23 15 0 0 0 0 0 ] #670 : 31083 525 8 [ 535 438 326 204 163 122 90 51 31 0 0 0 0 0 ] #671 : 29964 544 155 [ 502 475 342 219 165 119 102 49 24 0 0 0 0 0 ] #672 : 4247 47 8293 [ 31 20 26 17 20 13 10 4 2 1 1 0 0 0 ] #673 : 13697 200 1647 [ 175 133 124 97 81 68 43 25 10 0 0 0 0 0 ] #674 : 24569 301 0 [ 269 268 201 140 117 104 74 49 22 0 0 0 0 0 ] #675 : 13938 175 2 [ 166 152 137 91 70 52 33 19 19 0 0 0 0 0 ] #676 : 15211 404 0 [ 399 342 240 116 73 52 41 31 11 0 0 0 0 0 ] #677 : 21924 445 0 [ 422 415 298 155 124 90 65 38 17 0 0 0 0 0 ] #678 : 30953 740 8 [ 723 629 471 220 145 125 95 53 24 0 0 0 0 0 ] #679 : 25743 804 0 [ 757 703 493 253 158 119 81 41 11 0 0 0 0 0 ] #680 : 18702 619 1 [ 620 499 367 168 118 85 63 28 8 0 0 0 0 0 ] #681 : 26750 913 3 [ 912 737 489 235 157 99 78 41 18 0 0 0 0 0 ] #682 : 25071 735 16 [ 767 610 409 215 131 95 64 42 20 0 0 0 0 0 ] #683 : 12475 445 2 [ 441 365 246 116 69 57 23 17 11 0 0 0 0 0 ] #684 : 1681 13 111 [ 13 12 13 7 8 4 4 4 2 0 0 0 0 0 ] #685 : 8338 584 16 [ 588 447 260 91 44 29 20 9 4 0 0 0 0 0 ] #686 : 30449 1135 0 [ 1175 891 581 278 212 141 87 42 16 0 0 0 0 0 ] #687 : 31021 826 2 [ 829 736 570 375 257 158 99 26 18 0 0 0 0 0 ] #688 : 1617 66 8192 [ 55 59 39 23 15 9 5 2 0 0 0 0 0 0 ] #689 : 24985 872 31 [ 809 766 567 323 208 116 72 34 7 0 0 0 0 0 ] #690 : 30723 980 0 [ 987 916 658 343 194 137 89 41 16 0 0 0 0 0 ] #691 : 24345 963 2076 [ 957 836 611 311 175 133 58 23 12 0 0 0 0 0 ] #692 : 26365 1061 2065 [ 1077 920 674 320 177 114 81 31 10 0 0 0 0 0 ] #693 : 25505 1029 0 [ 1031 859 629 304 171 119 68 34 10 0 0 0 0 0 ] #694 : 17082 531 1 [ 542 420 323 159 105 66 44 29 11 0 0 0 0 0 ] #695 : 1728 22 1 [ 18 21 13 16 13 10 7 4 0 0 0 0 0 0 ] #696 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #697 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #698 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #699 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #700 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #701 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #702 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #703 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #704 : 3290 87 8204 [ 80 53 40 22 11 9 6 3 2 2 0 0 0 0 ] #705 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #706 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #707 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #708 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #709 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #710 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #711 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #712 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #713 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #714 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #715 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #716 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #717 : 1478 13 10330 [ 12 15 11 8 7 6 2 3 2 0 0 0 0 0 ] #718 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #719 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #720 : 2420 80 8511 [ 70 57 43 32 21 16 3 2 2 0 0 0 0 0 ] #721 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #722 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #723 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #724 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #725 : 7 7 22838 [ 7 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #726 : 33 32 484 [ 31 1 0 0 0 0 0 0 0 0 0 0 0 0 ] #727 : 39 39 2603 [ 39 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #728 : 2902 351 71 [ 324 207 165 48 20 11 3 2 0 0 0 0 0 0 ] #729 : 18710 678 1038 [ 620 571 395 215 143 81 51 25 9 0 0 0 0 0 ] #730 : 29869 651 97 [ 653 534 381 216 162 115 81 49 28 0 0 0 0 0 ] #731 : 29840 807 23 [ 796 664 491 251 166 119 94 44 22 0 0 0 0 0 ] #732 : 29842 1134 8 [ 1126 984 749 339 179 136 80 40 14 0 0 0 0 0 ] #733 : 30144 1030 32 [ 1052 832 589 240 163 120 87 51 18 0 0 0 0 0 ] #734 : 15558 378 0 [ 382 290 199 107 83 61 47 26 13 0 0 0 0 0 ] #735 : 30557 914 0 [ 923 789 590 266 149 124 73 52 23 0 0 0 0 0 ] #736 : 13509 182 8237 [ 147 107 83 44 39 20 17 17 7 6 1 1 0 0 ] #737 : 19630 865 90 [ 642 538 386 226 130 100 57 30 7 0 0 0 0 0 ] #738 : 26274 832 0 [ 796 691 504 260 144 85 72 39 21 0 0 0 0 0 ] #739 : 28992 1053 17 [ 1088 822 623 331 154 93 61 40 26 0 0 0 0 0 ] #740 : 29057 1099 2 [ 1085 916 623 312 190 132 79 31 19 0 0 0 0 0 ] #741 : 29503 1068 4 [ 1053 873 628 298 179 130 87 42 15 0 0 0 0 0 ] #742 : 29371 1144 0 [ 1133 973 661 306 187 127 83 31 19 0 0 0 0 0 ] #743 : 28260 1155 0 [ 1144 988 671 281 185 125 75 36 15 0 0 0 0 0 ] #744 : 30336 1028 0 [ 1028 892 539 267 170 129 88 44 20 0 0 0 0 0 ] #745 : 30538 1074 2 [ 1062 904 635 281 190 126 103 40 16 0 0 0 0 0 ] #746 : 29824 1291 72 [ 1270 1085 744 342 190 139 72 35 16 0 0 0 0 0 ] #747 : 30221 1187 32 [ 1229 1014 747 379 203 137 94 37 10 0 0 0 0 0 ] #748 : 27956 726 2 [ 666 611 441 210 144 111 78 46 23 0 0 0 0 0 ] #749 : 30322 1199 11 [ 1250 1034 695 344 178 132 73 44 16 0 0 0 0 0 ] #750 : 29847 1134 11 [ 1115 942 672 326 201 135 79 38 16 0 0 0 0 0 ] #751 : 14621 678 16560 [ 653 606 411 165 90 59 35 17 8 0 0 0 0 0 ] #752 : 2629 99 8244 [ 81 72 45 28 23 17 5 4 1 0 0 0 0 0 ] #753 : 11946 708 3163 [ 538 224 372 192 104 52 36 8 5 0 0 0 0 0 ] #754 : 27037 1073 0 [ 1077 940 610 283 173 101 75 39 14 0 0 0 0 0 ] #755 : 29670 1425 4 [ 1400 1273 867 336 179 118 74 40 12 0 0 0 0 0 ] #756 : 29439 1358 0 [ 1311 1152 836 404 223 126 70 30 13 0 0 0 0 0 ] #757 : 29466 1150 0 [ 1164 935 692 320 207 134 83 36 14 0 0 0 0 0 ] #758 : 29391 920 7 [ 931 738 564 259 172 128 91 44 17 0 0 0 0 0 ] #759 : 29600 1225 0 [ 1174 1065 706 338 194 116 84 39 14 0 0 0 0 0 ] #760 : 29693 1156 0 [ 1133 940 738 354 216 127 67 31 20 0 0 0 0 0 ] #761 : 26476 1377 52 [ 1354 1189 862 400 212 135 55 26 6 0 0 0 0 0 ] #762 : 29994 1382 1 [ 1358 1118 838 347 217 131 71 41 11 0 0 0 0 0 ] #763 : 30034 1306 9 [ 1274 1114 809 366 231 135 79 37 10 0 0 0 0 0 ] #764 : 28140 834 0 [ 820 736 546 330 200 129 74 34 18 0 0 0 0 0 ] #765 : 29475 984 16 [ 961 873 666 435 289 182 67 26 10 0 0 0 0 0 ] #766 : 29630 1277 8 [ 1194 1098 814 405 240 171 73 31 7 0 0 0 0 0 ] #767 : 30251 1129 25 [ 1117 959 730 359 199 136 87 45 10 0 0 0 0 0 ] #768 : 6405 63 8194 [ 41 34 34 24 19 13 6 6 4 4 1 0 0 0 ] #769 : 14415 591 70 [ 335 364 246 170 100 52 33 20 12 0 0 0 0 0 ] #770 : 30187 1132 9 [ 1087 970 684 303 177 133 77 42 18 0 0 0 0 0 ] #771 : 29889 1352 0 [ 1361 1120 776 336 185 116 82 39 14 0 0 0 0 0 ] #772 : 27421 1176 1 [ 1193 1028 733 325 189 122 65 37 11 0 0 0 0 0 ] #773 : 14619 616 0 [ 599 504 377 158 90 59 28 18 11 0 0 0 0 0 ] #774 : 16970 474 127 [ 472 409 324 192 149 91 50 22 6 0 0 0 0 0 ] #775 : 29717 906 32 [ 879 811 638 419 250 165 80 30 12 0 0 0 0 0 ] #776 : 30402 1084 6 [ 1016 983 677 385 250 159 94 25 13 0 0 0 0 0 ] #777 : 27528 1247 0 [ 1278 1097 736 315 202 144 76 32 7 0 0 0 0 0 ] #778 : 30008 1207 4 [ 1164 1048 767 330 193 135 77 34 17 0 0 0 0 0 ] #779 : 29744 1037 684 [ 1048 866 643 325 200 137 80 41 15 0 0 0 0 0 ] #780 : 29252 1645 0 [ 1644 1422 985 413 221 135 61 31 7 0 0 0 0 0 ] #781 : 29502 1512 3 [ 1494 1296 864 355 197 137 75 33 10 0 0 0 0 0 ] #782 : 29856 1291 0 [ 1290 1121 749 332 200 130 80 30 17 0 0 0 0 0 ] #783 : 29306 1723 0 [ 1732 1443 972 416 190 149 55 28 10 0 0 0 0 0 ] #784 : 6457 77 8765 [ 65 48 32 29 19 20 8 5 1 1 1 1 0 0 ] #785 : 18264 998 0 [ 786 171 522 259 163 96 46 20 7 0 0 0 0 0 ] #786 : 12586 519 0 [ 496 471 315 150 93 63 31 13 6 0 0 0 0 0 ] #787 : 30174 1146 17 [ 1118 1008 754 349 211 134 66 39 17 0 0 0 0 0 ] #788 : 26995 1103 2 [ 1083 932 678 311 192 117 64 32 15 0 0 0 0 0 ] #789 : 29495 1613 0 [ 1593 1379 930 410 220 145 76 34 3 0 0 0 0 0 ] #790 : 30121 1295 12 [ 1193 1114 795 376 238 162 88 24 11 0 0 0 0 0 ] #791 : 27262 1467 256 [ 1474 1184 839 378 195 149 59 18 12 0 0 0 0 0 ] #792 : 27465 1374 2 [ 1327 1153 810 318 190 141 80 26 8 0 0 0 0 0 ] #793 : 29444 1602 0 [ 1602 1365 906 422 234 139 71 26 8 0 0 0 0 0 ] #794 : 26019 1484 0 [ 1505 1251 847 390 177 102 57 27 9 0 0 0 0 0 ] #795 : 28379 1729 19 [ 1685 1543 1110 498 223 105 69 16 7 0 0 0 0 0 ] #796 : 29127 1828 0 [ 1775 1618 1111 523 226 127 52 23 6 0 0 0 0 0 ] #797 : 28936 1880 8 [ 1900 1622 1120 480 241 115 64 18 6 0 0 0 0 0 ] #798 : 30315 1117 0 [ 1161 995 699 366 236 156 90 34 10 0 0 0 0 0 ] #799 : 29621 1537 2 [ 1559 1333 937 430 272 169 84 18 3 0 0 0 0 0 ] #800 : 4092 47 8197 [ 40 22 26 22 21 20 15 10 2 0 0 0 0 0 ] #801 : 1334 13 7936 [ 2 4 5 9 7 5 7 4 0 0 0 0 0 0 ] #802 : 25208 908 0 [ 930 787 554 291 167 116 74 37 9 0 0 0 0 0 ] #803 : 15296 547 0 [ 530 455 326 155 99 74 41 19 9 0 0 0 0 0 ] #804 : 10103 270 0 [ 259 224 181 106 63 43 29 10 9 0 0 0 0 0 ] #805 : 29366 939 61 [ 936 781 573 328 214 147 74 35 18 0 0 0 0 0 ] #806 : 30007 982 11 [ 931 806 608 295 195 127 78 44 19 0 0 0 0 0 ] #807 : 23559 942 0 [ 957 773 534 245 136 102 52 24 20 0 0 0 0 0 ] #808 : 10116 387 12 [ 370 349 226 106 66 53 27 14 4 0 0 0 0 0 ] #809 : 29938 1236 0 [ 1218 1066 729 373 237 154 77 37 9 0 0 0 0 0 ] #810 : 29976 1366 0 [ 1386 1131 760 381 215 137 84 33 11 0 0 0 0 0 ] #811 : 29942 1212 2 [ 1168 1063 736 357 217 133 85 34 13 0 0 0 0 0 ] #812 : 29876 1433 1 [ 1474 1237 840 389 244 146 84 27 8 0 0 0 0 0 ] #813 : 28207 1173 0 [ 1201 975 690 375 204 139 67 29 14 0 0 0 0 0 ] #814 : 29944 1415 0 [ 1424 1274 885 452 246 151 65 26 10 0 0 0 0 0 ] #815 : 29636 1342 0 [ 1312 1164 857 391 221 137 74 33 10 0 0 0 0 0 ] #816 : 3316 68 8209 [ 60 40 38 32 25 14 10 6 2 0 0 0 0 0 ] #817 : 23836 933 12 [ 962 821 568 290 192 116 58 28 10 0 0 0 0 0 ] #818 : 29893 654 25 [ 635 573 424 246 164 146 86 51 20 0 0 0 0 0 ] #819 : 29818 1474 0 [ 1486 1290 950 466 229 121 63 24 14 0 0 0 0 0 ] #820 : 31460 670 0 [ 664 590 440 260 201 143 93 52 21 0 0 0 0 0 ] #821 : 28588 1006 0 [ 1002 841 624 312 171 118 73 44 16 0 0 0 0 0 ] #822 : 28845 809 32 [ 795 649 470 273 180 137 75 43 20 0 0 0 0 0 ] #823 : 27798 959 24 [ 914 826 584 324 191 117 81 37 14 0 0 0 0 0 ] #824 : 29466 594 0 [ 616 507 377 243 182 131 88 59 16 0 0 0 0 0 ] #825 : 30451 1051 20 [ 967 884 649 334 203 134 85 40 17 0 0 0 0 0 ] #826 : 31166 800 0 [ 810 676 471 280 187 136 112 57 12 0 0 0 0 0 ] #827 : 30902 866 0 [ 926 760 562 306 213 146 91 47 15 0 0 0 0 0 ] #828 : 29963 1161 0 [ 1153 1005 696 364 197 147 85 33 14 0 0 0 0 0 ] #829 : 25746 1137 1 [ 1126 948 721 394 185 101 60 34 9 0 0 0 0 0 ] #830 : 30649 1022 3 [ 1043 877 693 383 232 148 90 41 10 0 0 0 0 0 ] #831 : 28382 1238 2 [ 1250 1032 793 405 238 134 79 27 8 0 0 0 0 0 ] #832 : 1487 61 8225 [ 47 36 22 20 14 6 3 2 1 0 0 0 0 0 ] #833 : 15349 589 1088 [ 401 346 342 215 140 65 41 21 6 0 0 0 0 0 ] #834 : 27188 912 0 [ 906 801 598 352 193 104 60 38 17 0 0 0 0 0 ] #835 : 27626 1133 4 [ 1120 1003 763 401 222 119 56 29 14 0 0 0 0 0 ] #836 : 26448 1151 0 [ 1102 989 780 429 217 111 55 29 10 0 0 0 0 0 ] #837 : 27491 1256 0 [ 1265 1037 714 388 207 107 63 30 14 0 0 0 0 0 ] #838 : 28733 1498 0 [ 1515 1287 933 468 233 120 60 27 9 0 0 0 0 0 ] #839 : 26751 1192 0 [ 1257 999 698 360 204 113 57 31 13 0 0 0 0 0 ] #840 : 13211 701 0 [ 567 532 435 342 166 27 18 9 5 0 0 0 0 0 ] #841 : 23842 1352 4 [ 1346 1172 848 433 173 89 46 23 7 0 0 0 0 0 ] #842 : 28281 1648 0 [ 1621 1392 1017 494 205 89 56 26 11 0 0 0 0 0 ] #843 : 27622 1586 10 [ 1600 1339 994 473 204 91 51 24 12 0 0 0 0 0 ] #844 : 28748 1206 8 [ 1182 989 773 416 226 122 60 29 16 0 0 0 0 0 ] #845 : 30400 795 0 [ 760 636 520 298 160 105 83 51 24 0 0 0 0 0 ] #846 : 23636 567 0 [ 554 513 384 217 132 93 78 36 16 0 0 0 0 0 ] #847 : 30561 834 0 [ 811 709 571 282 197 125 82 51 19 0 0 0 0 0 ] #848 : 2485 71 8195 [ 67 37 34 30 23 8 9 2 2 0 0 0 0 0 ] #849 : 29921 909 10 [ 861 670 518 270 160 116 85 42 25 0 0 0 0 0 ] #850 : 29824 884 0 [ 784 732 512 271 174 117 87 38 25 0 0 0 0 0 ] #851 : 31139 691 0 [ 645 623 490 313 201 112 79 53 24 0 0 0 0 0 ] #852 : 31203 762 0 [ 753 639 501 270 197 143 88 51 20 0 0 0 0 0 ] #853 : 29613 630 0 [ 613 566 437 245 166 118 75 49 26 0 0 0 0 0 ] #854 : 30006 1211 0 [ 1190 1064 802 399 204 128 62 44 13 0 0 0 0 0 ] #855 : 27259 1368 0 [ 1341 1187 832 395 192 129 58 30 9 0 0 0 0 0 ] #856 : 22202 919 0 [ 890 764 580 261 169 108 60 20 11 0 0 0 0 0 ] #857 : 30048 1028 8 [ 1012 878 650 355 215 143 76 46 12 0 0 0 0 0 ] #858 : 29907 1339 0 [ 1275 1174 773 393 213 128 68 38 13 0 0 0 0 0 ] #859 : 5386 358 0 [ 330 310 203 73 38 26 9 6 1 0 0 0 0 0 ] #860 : 22911 837 0 [ 827 722 518 271 179 129 61 27 8 0 0 0 0 0 ] #861 : 7101 267 0 [ 255 225 169 77 41 21 23 8 5 0 0 0 0 0 ] #862 : 29575 1284 23 [ 1269 1101 718 382 221 122 77 35 13 0 0 0 0 0 ] #863 : 26442 1216 72 [ 1156 1045 759 344 186 119 62 30 11 0 0 0 0 0 ] #864 : 2043 44 8251 [ 27 20 20 19 23 15 2 4 1 0 0 0 0 0 ] #865 : 25790 896 16 [ 864 729 511 264 157 101 60 36 20 0 0 0 0 0 ] #866 : 28864 1179 1028 [ 1166 985 666 387 208 136 84 36 9 0 0 0 0 0 ] #867 : 29664 1419 0 [ 1454 1225 818 393 195 125 61 37 14 0 0 0 0 0 ] #868 : 29620 1517 0 [ 1472 1272 815 411 199 122 71 34 12 0 0 0 0 0 ] #869 : 25461 881 4 [ 827 809 540 293 161 110 56 31 19 0 0 0 0 0 ] #870 : 26674 1241 0 [ 1298 1048 720 376 189 117 60 27 13 0 0 0 0 0 ] #871 : 30710 932 0 [ 922 782 562 283 170 136 74 51 21 0 0 0 0 0 ] #872 : 30188 1250 0 [ 1238 1047 728 425 210 121 74 33 17 0 0 0 0 0 ] #873 : 29523 1159 18 [ 1169 987 705 359 183 117 65 35 21 0 0 0 0 0 ] #874 : 26299 1457 2446 [ 1441 1253 858 405 212 118 51 27 7 0 0 0 0 0 ] #875 : 30059 1258 0 [ 1223 1092 793 403 204 129 73 36 14 0 0 0 0 0 ] #876 : 30277 1196 16 [ 1173 1066 793 389 209 126 76 36 15 0 0 0 0 0 ] #877 : 30195 1201 0 [ 1189 981 639 353 208 139 89 36 14 0 0 0 0 0 ] #878 : 30067 680 0 [ 639 590 452 259 187 134 85 47 22 0 0 0 0 0 ] #879 : 29861 1123 0 [ 1145 946 588 329 199 145 91 44 10 0 0 0 0 0 ] #880 : 2690 58 8192 [ 40 37 26 23 19 14 6 3 1 1 0 0 0 0 ] #881 : 29913 635 16 [ 613 508 393 259 170 127 87 46 25 0 0 0 0 0 ] #882 : 14255 665 512 [ 633 533 325 157 77 66 40 18 7 0 0 0 0 0 ] #883 : 24958 808 0 [ 800 685 473 248 158 104 70 39 14 0 0 0 0 0 ] #884 : 12191 359 0 [ 325 307 227 135 91 46 29 13 11 0 0 0 0 0 ] #885 : 30199 1284 0 [ 1247 1092 764 382 223 132 79 39 11 0 0 0 0 0 ] #886 : 30775 979 0 [ 943 772 560 280 192 146 89 49 16 0 0 0 0 0 ] #887 : 30619 1064 0 [ 1067 932 620 295 172 130 87 43 19 0 0 0 0 0 ] #888 : 30076 867 0 [ 842 729 486 239 179 132 97 53 15 0 0 0 0 0 ] #889 : 29673 1072 1 [ 1089 870 619 308 201 128 86 39 16 0 0 0 0 0 ] #890 : 29985 1357 7 [ 1359 1129 810 389 215 130 64 39 13 0 0 0 0 0 ] #891 : 30882 904 8 [ 898 712 562 281 220 130 80 46 21 0 0 0 0 0 ] #892 : 29931 1407 0 [ 1429 1159 812 403 194 133 57 32 18 0 0 0 0 0 ] #893 : 29862 1347 0 [ 1298 1076 851 404 200 120 71 36 14 0 0 0 0 0 ] #894 : 30452 1112 0 [ 1148 948 686 381 225 149 77 37 14 0 0 0 0 0 ] #895 : 31365 674 0 [ 645 548 376 229 163 124 86 53 29 0 0 0 0 0 ] #896 : 3110 59 8192 [ 50 42 32 24 18 14 10 6 0 1 0 0 0 0 ] #897 : 30214 572 32 [ 488 475 356 249 211 149 91 53 18 0 0 0 0 0 ] #898 : 30761 971 0 [ 991 843 645 362 203 129 84 39 19 0 0 0 0 0 ] #899 : 30336 1117 2 [ 1156 956 709 360 215 142 80 38 14 0 0 0 0 0 ] #900 : 29872 1435 0 [ 1416 1204 886 429 222 139 71 29 11 0 0 0 0 0 ] #901 : 29054 1335 0 [ 1380 1151 821 431 205 122 77 31 10 0 0 0 0 0 ] #902 : 29035 1161 0 [ 1121 1003 783 401 251 156 75 39 3 0 0 0 0 0 ] #903 : 29768 1495 10 [ 1468 1258 850 418 214 154 77 31 7 0 0 0 0 0 ] #904 : 24380 1121 4 [ 1144 986 682 317 164 116 69 23 9 0 0 0 0 0 ] #905 : 29467 1467 0 [ 1471 1254 852 374 203 129 67 32 13 0 0 0 0 0 ] #906 : 30093 1231 0 [ 1217 1074 752 385 240 175 75 30 10 0 0 0 0 0 ] #907 : 30128 1188 37 [ 1198 1077 756 407 243 151 84 30 10 0 0 0 0 0 ] #908 : 28234 1372 0 [ 1422 1178 816 439 249 154 79 17 6 0 0 0 0 0 ] #909 : 28517 1232 3 [ 1205 1054 779 395 233 151 72 23 11 0 0 0 0 0 ] #910 : 30327 1198 0 [ 1133 1061 806 445 248 152 73 27 13 0 0 0 0 0 ] #911 : 30007 1321 0 [ 1275 1128 827 422 225 132 83 36 8 0 0 0 0 0 ] #912 : 8942 130 8192 [ 130 98 102 78 50 34 25 16 8 0 0 0 0 0 ] #913 : 14088 799 16 [ 642 67 410 237 129 55 35 21 4 0 0 0 0 0 ] #914 : 23994 1179 5455 [ 1184 1009 754 400 209 105 57 21 6 0 0 0 0 0 ] #915 : 27864 1061 0 [ 1014 891 689 375 219 132 79 29 11 0 0 0 0 0 ] #916 : 28803 1750 94 [ 1757 1481 959 439 218 122 70 28 5 0 0 0 0 0 ] #917 : 27420 1607 0 [ 1614 1337 913 385 201 136 60 23 8 0 0 0 0 0 ] #918 : 29411 1617 0 [ 1575 1438 964 404 209 134 72 26 9 0 0 0 0 0 ] #919 : 29728 1399 0 [ 1420 1256 855 425 206 124 73 35 10 0 0 0 0 0 ] #920 : 24516 1143 0 [ 1128 1036 685 322 162 103 56 23 14 0 0 0 0 0 ] #921 : 15716 650 173 [ 658 583 421 210 108 73 39 15 8 0 0 0 0 0 ] #922 : 15856 910 1634 [ 882 787 606 294 133 67 30 7 6 0 0 0 0 0 ] #923 : 28923 1488 9 [ 1479 1338 916 366 206 127 75 27 10 0 0 0 0 0 ] #924 : 29528 1620 0 [ 1640 1364 968 439 237 161 84 17 5 0 0 0 0 0 ] #925 : 28670 1528 0 [ 1454 1338 985 495 220 120 61 20 11 0 0 0 0 0 ] #926 : 20642 1249 32 [ 1232 1115 781 341 160 82 48 10 7 0 0 0 0 0 ] #927 : 29250 1732 0 [ 1740 1541 1113 553 232 104 59 25 6 0 0 0 0 0 ] #928 : 5562 64 8204 [ 58 52 40 23 20 10 11 3 3 1 2 0 0 0 ] #929 : 27554 1326 0 [ 1276 1021 771 416 194 82 49 28 21 0 0 0 0 0 ] #930 : 28829 1969 0 [ 1933 1726 1243 623 247 114 42 13 6 0 0 0 0 0 ] #931 : 29009 1858 4 [ 1851 1655 1232 623 273 115 50 11 5 0 0 0 0 0 ] #932 : 29834 1455 0 [ 1372 1303 1016 530 247 111 63 23 12 0 0 0 0 0 ] #933 : 28958 1869 0 [ 1802 1686 1296 609 248 113 46 11 7 0 0 0 0 0 ] #934 : 29464 1648 0 [ 1684 1420 1081 521 204 98 59 23 13 0 0 0 0 0 ] #935 : 29417 1649 0 [ 1601 1508 1166 603 253 108 56 21 6 0 0 0 0 0 ] #936 : 29860 1387 4 [ 1380 1246 923 443 222 135 74 26 11 0 0 0 0 0 ] #937 : 30007 1374 0 [ 1387 1168 863 362 210 154 86 32 8 0 0 0 0 0 ] #938 : 29765 1411 0 [ 1423 1219 882 439 263 164 67 24 8 0 0 0 0 0 ] #939 : 29421 1673 0 [ 1667 1393 950 468 281 146 57 20 8 0 0 0 0 0 ] #940 : 29205 1731 0 [ 1709 1496 1048 515 288 166 60 11 4 0 0 0 0 0 ] #941 : 29739 1496 0 [ 1493 1273 859 471 264 160 63 28 6 0 0 0 0 0 ] #942 : 28859 1878 0 [ 1837 1557 1181 530 234 138 54 16 5 0 0 0 0 0 ] #943 : 29192 1774 0 [ 1754 1549 1105 568 259 127 40 16 10 0 0 0 0 0 ] #944 : 1753 46 8192 [ 39 31 33 20 19 9 6 1 1 0 0 0 0 0 ] #945 : 21492 1639 640 [ 1618 1373 924 497 241 79 34 7 0 0 0 0 0 0 ] #946 : 26395 1417 1222 [ 1365 1213 921 487 281 139 51 16 3 0 0 0 0 0 ] #947 : 30149 1298 0 [ 1317 1136 834 459 294 162 79 22 7 0 0 0 0 0 ] #948 : 30193 1274 0 [ 1281 1090 783 406 246 151 87 31 8 0 0 0 0 0 ] #949 : 30180 1222 0 [ 1224 1032 759 386 262 168 73 29 11 0 0 0 0 0 ] #950 : 29779 1303 0 [ 1331 1126 815 425 229 140 68 37 9 0 0 0 0 0 ] #951 : 29274 1231 128 [ 1256 1053 772 397 210 127 73 29 15 0 0 0 0 0 ] #952 : 29329 1476 0 [ 1469 1294 884 423 239 142 66 25 10 0 0 0 0 0 ] #953 : 28012 1294 2 [ 1286 1093 833 447 240 165 67 17 8 0 0 0 0 0 ] #954 : 28099 1331 0 [ 1343 1100 819 388 230 129 72 37 4 0 0 0 0 0 ] #955 : 27548 1416 0 [ 1432 1216 845 390 196 139 68 29 6 0 0 0 0 0 ] #956 : 27031 1803 0 [ 1791 1292 690 375 186 117 51 24 15 0 0 0 0 0 ] #957 : 28996 1441 16 [ 1390 1279 902 456 204 112 71 32 9 0 0 0 0 0 ] #958 : 29631 1341 16 [ 1363 1194 742 354 187 140 93 34 9 0 0 0 0 0 ] #959 : 29122 1471 0 [ 1418 1300 920 414 228 138 71 23 10 0 0 0 0 0 ] #960 : 2749 64 8192 [ 61 54 45 34 15 13 9 5 1 0 0 0 0 0 ] #961 : 23708 1432 16 [ 1234 581 752 350 181 100 67 20 10 0 0 0 0 0 ] #962 : 29306 1674 0 [ 1712 1383 959 384 190 131 75 22 12 0 0 0 0 0 ] #963 : 29517 1622 0 [ 1639 1399 964 355 183 105 63 35 14 0 0 0 0 0 ] #964 : 27745 1745 1 [ 1755 1371 938 415 193 103 65 24 10 0 0 0 0 0 ] #965 : 28914 1558 0 [ 1524 1349 999 463 224 103 46 24 16 0 0 0 0 0 ] #966 : 28625 1579 0 [ 1521 1320 934 437 233 114 58 24 12 0 0 0 0 0 ] #967 : 29464 1536 0 [ 1550 1291 887 441 239 123 76 28 8 0 0 0 0 0 ] #968 : 30034 1323 0 [ 1274 1088 790 354 217 145 77 33 13 0 0 0 0 0 ] #969 : 30538 1001 14 [ 982 850 640 326 218 140 78 40 18 0 0 0 0 0 ] #970 : 30052 1033 0 [ 1018 815 643 328 186 115 89 47 15 0 0 0 0 0 ] #971 : 5069 64 63 [ 59 49 48 44 39 27 21 6 3 0 0 0 0 0 ] #972 : 19372 955 0 [ 938 833 538 223 118 72 49 31 6 0 0 0 0 0 ] #973 : 29909 1093 0 [ 1117 862 707 336 189 115 70 49 16 0 0 0 0 0 ] #974 : 30428 1146 0 [ 1098 1009 774 477 309 163 84 24 7 0 0 0 0 0 ] #975 : 30474 1108 3 [ 1116 937 751 430 257 161 80 30 11 0 0 0 0 0 ] #976 : 3672 92 8198 [ 92 86 50 47 25 22 11 4 2 0 0 0 0 0 ] #977 : 28522 1115 248 [ 1110 978 696 332 231 142 82 33 9 0 0 0 0 0 ] #978 : 29245 1749 0 [ 1733 1460 1006 481 255 133 63 20 7 0 0 0 0 0 ] #979 : 30276 1191 2 [ 1100 1030 819 448 252 139 76 32 11 0 0 0 0 0 ] #980 : 29187 1761 32 [ 1751 1508 1029 554 250 111 48 21 10 0 0 0 0 0 ] #981 : 29636 1550 0 [ 1434 1285 970 537 273 123 59 20 11 0 0 0 0 0 ] #982 : 30255 1252 0 [ 1205 1083 761 434 229 132 75 30 15 0 0 0 0 0 ] #983 : 30775 988 0 [ 1031 800 560 320 197 127 98 55 11 0 0 0 0 0 ] #984 : 25746 1010 22 [ 902 896 655 276 135 96 65 39 15 0 0 0 0 0 ] #985 : 22316 1528 1792 [ 1526 1155 674 281 136 101 55 18 9 0 0 0 0 0 ] #986 : 27724 1332 11 [ 1256 1168 883 471 300 154 63 16 4 0 0 0 0 0 ] #987 : 30639 1045 0 [ 999 914 725 406 290 170 71 29 13 0 0 0 0 0 ] #988 : 29978 1348 0 [ 1326 1186 850 448 266 158 90 19 7 0 0 0 0 0 ] #989 : 20648 807 0 [ 792 700 538 288 171 112 50 17 9 0 0 0 0 0 ] #990 : 6223 232 430 [ 217 215 140 85 49 25 21 5 3 0 0 0 0 0 ] #991 : 4259 208 1739 [ 193 181 112 69 35 19 10 5 1 0 0 0 0 0 ] #992 : 1554 109 8192 [ 96 69 44 35 12 7 3 2 0 0 0 0 0 0 ] #993 : 363 4 1566 [ 1 3 3 1 1 2 2 1 0 0 0 0 0 0 ] #994 : 1695 88 1915 [ 99 72 47 36 11 9 6 1 0 0 0 0 0 0 ] #995 : 1879 17 22 [ 17 17 17 10 9 4 4 3 3 0 0 0 0 0 ] #996 : 863 5 8192 [ 5 3 5 4 4 3 2 2 1 0 0 0 0 0 ] #997 : 1989 150 24832 [ 149 120 104 56 22 10 1 0 0 0 0 0 0 0 ] #998 : 5107 344 154 [ 337 285 152 75 27 16 14 5 2 0 0 0 0 0 ] #999 : 27789 1207 689 [ 1211 1025 716 370 209 130 67 38 8 0 0 0 0 0 ] #1000 : 30215 1247 3 [ 1263 1064 706 382 223 155 90 32 10 0 0 0 0 0 ] #1001 : 29878 1420 16 [ 1482 1262 876 412 246 165 78 24 7 0 0 0 0 0 ] #1002 : 29817 1445 6 [ 1461 1270 934 464 272 172 73 18 6 0 0 0 0 0 ] #1003 : 29504 1169 52 [ 1082 1009 743 443 283 158 83 25 7 0 0 0 0 0 ] #1004 : 23838 755 0 [ 762 670 478 300 183 123 63 29 11 0 0 0 0 0 ] #1005 : 30469 1120 16 [ 1099 951 697 387 243 145 70 39 14 0 0 0 0 0 ] #1006 : 30146 1240 10 [ 1194 1046 843 498 297 177 60 23 9 0 0 0 0 0 ] #1007 : 30149 1241 1 [ 1201 1036 805 457 302 172 79 24 6 0 0 0 0 0 ] #1008 : 5556 66 8231 [ 52 56 46 33 19 15 11 7 4 1 1 0 0 0 ] #1009 : 29499 1425 64 [ 1449 1233 904 402 240 146 88 24 6 0 0 0 0 0 ] #1010 : 28195 1334 0 [ 1297 1189 826 446 251 152 59 19 10 0 0 0 0 0 ] #1011 : 29697 1506 0 [ 1607 1295 921 497 251 170 67 24 4 0 0 0 0 0 ] #1012 : 29205 1497 16 [ 1515 1293 930 459 239 148 75 22 6 0 0 0 0 0 ] #1013 : 29987 1321 0 [ 1329 1173 834 480 288 162 58 28 8 0 0 0 0 0 ] #1014 : 30208 1145 0 [ 1142 973 750 381 227 163 87 28 12 0 0 0 0 0 ] #1015 : 20795 866 1672 [ 881 741 556 304 165 106 55 17 8 0 0 0 0 0 ] #1016 : 29753 1275 0 [ 1265 1074 779 425 225 141 67 26 16 0 0 0 0 0 ] #1017 : 22856 702 2 [ 646 615 465 254 168 112 61 34 10 0 0 0 0 0 ] #1018 : 26531 1105 0 [ 1105 931 623 338 208 136 61 27 13 0 0 0 0 0 ] #1019 : 29095 1513 13 [ 1511 1254 903 423 252 153 67 18 10 0 0 0 0 0 ] #1020 : 29950 1368 0 [ 1346 1200 831 434 261 164 80 32 3 0 0 0 0 0 ] #1021 : 24849 1032 2080 [ 991 873 672 354 179 123 59 25 11 0 0 0 0 0 ] #1022 : 29529 1607 2 [ 1615 1401 990 492 276 164 62 14 7 0 0 0 0 0 ] #1023 : 24776 1413 0 [ 1428 1210 868 456 223 106 55 14 6 0 0 0 0 0 ] #1024 : 5431 74 8192 [ 73 57 37 41 30 18 10 8 4 2 0 0 0 0 ] #1025 : 21376 1335 0 [ 1256 1160 910 468 247 56 21 12 7 0 0 0 0 0 ] #1026 : 26898 1604 22 [ 1610 1364 990 469 240 128 52 16 6 0 0 0 0 0 ] #1027 : 29283 1713 0 [ 1705 1481 1022 480 257 149 60 15 8 0 0 0 0 0 ] #1028 : 29466 1625 2 [ 1708 1345 1021 475 252 135 60 19 10 0 0 0 0 0 ] #1029 : 25279 1447 0 [ 1355 1278 940 535 253 116 47 12 4 0 0 0 0 0 ] #1030 : 29534 1605 0 [ 1532 1363 1043 518 232 120 53 21 13 0 0 0 0 0 ] #1031 : 28988 1822 0 [ 1806 1565 1243 653 298 106 41 14 5 0 0 0 0 0 ] #1032 : 28874 1860 0 [ 1806 1648 1227 640 275 120 42 8 7 0 0 0 0 0 ] #1033 : 28590 1725 0 [ 1768 1547 1214 645 283 93 35 15 8 0 0 0 0 0 ] #1034 : 28393 1888 0 [ 1891 1651 1300 664 307 105 33 12 3 0 0 0 0 0 ] #1035 : 29157 1631 0 [ 1653 1446 1029 566 290 110 52 19 8 0 0 0 0 0 ] #1036 : 22985 1310 5 [ 1287 1135 821 416 211 115 44 17 3 0 0 0 0 0 ] #1037 : 23234 916 0 [ 958 786 604 340 207 149 59 19 5 0 0 0 0 0 ] #1038 : 26108 1363 0 [ 1338 1137 864 424 240 113 64 22 5 0 0 0 0 0 ] #1039 : 23249 1642 16 [ 1577 1416 1042 508 217 97 37 7 3 0 0 0 0 0 ] #1040 : 6091 64 8196 [ 51 50 39 37 27 16 15 10 3 1 1 0 0 0 ] #1041 : 20196 750 0 [ 744 660 477 238 149 95 55 24 9 0 0 0 0 0 ] #1042 : 24529 1067 256 [ 1075 903 640 336 161 88 54 33 13 0 0 0 0 0 ] #1043 : 27214 1104 0 [ 1066 938 702 421 229 123 54 33 11 0 0 0 0 0 ] #1044 : 23849 1247 0 [ 1257 1080 758 383 200 102 43 22 9 0 0 0 0 0 ] #1045 : 26626 1202 0 [ 1268 1039 772 406 181 119 56 30 11 0 0 0 0 0 ] #1046 : 27523 1033 0 [ 1063 924 649 360 216 104 69 36 13 0 0 0 0 0 ] #1047 : 25628 1015 0 [ 972 870 647 345 180 113 65 26 14 0 0 0 0 0 ] #1048 : 25006 1215 16 [ 1262 986 811 408 218 88 50 25 10 0 0 0 0 0 ] #1049 : 27445 1530 0 [ 1497 1344 969 539 256 103 42 15 12 0 0 0 0 0 ] #1050 : 28955 1729 27 [ 1759 1506 1148 601 268 100 38 16 11 0 0 0 0 0 ] #1051 : 29071 1810 0 [ 1801 1595 1154 615 279 101 35 18 9 0 0 0 0 0 ] #1052 : 29167 1561 1 [ 1587 1356 1035 557 291 117 43 20 10 0 0 0 0 0 ] #1053 : 29867 1318 0 [ 1293 1115 852 443 240 134 64 28 14 0 0 0 0 0 ] #1054 : 28455 1635 512 [ 1627 1414 1056 574 255 103 38 26 8 0 0 0 0 0 ] #1055 : 28494 2039 0 [ 2076 1721 1330 711 276 78 29 13 6 0 0 0 0 0 ] #1056 : 3511 75 8192 [ 61 39 33 25 20 17 14 6 2 0 0 0 0 0 ] #1057 : 23567 1704 256 [ 1659 1440 1111 599 242 73 18 7 6 0 0 0 0 0 ] #1058 : 29593 1366 2 [ 1305 1156 956 571 245 127 44 29 12 0 0 0 0 0 ] #1059 : 28708 1933 5 [ 1936 1722 1202 655 274 114 30 12 7 0 0 0 0 0 ] #1060 : 26106 1520 1 [ 1548 1305 977 515 220 113 40 15 9 0 0 0 0 0 ] #1061 : 28517 1995 0 [ 1943 1735 1298 637 309 124 33 6 4 0 0 0 0 0 ] #1062 : 26582 1967 122 [ 1948 1681 1204 585 224 112 34 11 4 0 0 0 0 0 ] #1063 : 28567 1942 11 [ 1863 1684 1246 620 267 111 25 15 8 0 0 0 0 0 ] #1064 : 28400 2050 0 [ 2032 1788 1228 557 221 107 39 17 7 0 0 0 0 0 ] #1065 : 19509 1385 2 [ 1273 1168 843 490 226 60 22 11 1 0 0 0 0 0 ] #1066 : 24480 1768 0 [ 1760 1554 1093 533 218 74 40 10 5 0 0 0 0 0 ] #1067 : 27393 1411 1472 [ 1415 1273 904 435 221 114 71 22 7 0 0 0 0 0 ] #1068 : 25041 1789 4096 [ 1805 1572 1243 638 224 83 25 7 5 0 0 0 0 0 ] #1069 : 27900 2012 8 [ 2126 1815 1230 637 246 72 38 11 8 0 0 0 0 0 ] #1070 : 27475 1672 16 [ 1675 1426 1019 485 207 99 47 17 13 0 0 0 0 0 ] #1071 : 14282 863 2776 [ 828 777 549 301 114 39 16 13 6 0 0 0 0 0 ] #1072 : 1495 52 8192 [ 37 39 33 32 20 9 6 0 0 0 0 0 0 0 ] #1073 : 19878 1749 32 [ 1654 1384 986 431 188 82 22 6 1 0 0 0 0 0 ] #1074 : 22380 1198 37 [ 1202 1051 747 383 168 79 38 18 12 0 0 0 0 0 ] #1075 : 13951 904 41 [ 843 810 574 315 123 41 23 9 3 0 0 0 0 0 ] #1076 : 28216 1949 0 [ 1946 1727 1180 608 249 107 43 12 6 0 0 0 0 0 ] #1077 : 28636 2067 0 [ 2118 1803 1276 622 252 101 37 13 6 0 0 0 0 0 ] #1078 : 28891 1900 2 [ 1853 1647 1214 625 250 105 38 20 6 0 0 0 0 0 ] #1079 : 29586 1530 0 [ 1496 1309 938 475 232 120 56 31 11 0 0 0 0 0 ] #1080 : 28717 1913 0 [ 1917 1610 1175 596 260 107 34 14 10 0 0 0 0 0 ] #1081 : 27899 1477 127 [ 1487 1278 892 490 223 92 46 22 16 0 0 0 0 0 ] #1082 : 21754 1615 2048 [ 1612 1383 994 491 210 73 25 7 5 0 0 0 0 0 ] #1083 : 27827 1234 2 [ 1285 1009 777 387 221 132 63 29 11 0 0 0 0 0 ] #1084 : 28765 1476 4 [ 1407 1191 834 387 225 141 69 21 13 0 0 0 0 0 ] #1085 : 26860 2096 0 [ 2094 1773 1233 626 287 79 31 9 4 0 0 0 0 0 ] #1086 : 27661 2067 0 [ 2111 1737 1285 639 295 70 22 11 8 0 0 0 0 0 ] #1087 : 27574 2243 0 [ 2240 1883 1366 677 278 77 27 4 6 0 0 0 0 0 ] #1088 : 2592 44 8206 [ 40 26 19 15 16 10 13 5 1 0 0 0 0 0 ] #1089 : 16847 1395 3200 [ 1341 1183 877 424 178 48 17 4 1 0 0 0 0 0 ] #1090 : 25359 1909 0 [ 1867 1652 1199 570 229 76 18 12 8 0 0 0 0 0 ] #1091 : 27694 2144 0 [ 2168 1799 1306 660 254 84 15 11 9 0 0 0 0 0 ] #1092 : 25560 1644 1 [ 1668 1440 987 497 252 99 40 20 3 0 0 0 0 0 ] #1093 : 26644 1321 45 [ 1294 1113 819 427 203 84 52 36 10 0 0 0 0 0 ] #1094 : 15763 1022 24 [ 985 837 592 302 116 48 29 16 4 0 0 0 0 0 ] #1095 : 14387 792 12 [ 791 694 494 243 108 51 17 12 9 0 0 0 0 0 ] #1096 : 7037 261 3584 [ 235 209 154 71 35 17 12 14 6 0 0 0 0 0 ] #1097 : 9137 456 15 [ 449 374 295 149 68 26 13 6 8 0 0 0 0 0 ] #1098 : 15682 1000 2 [ 982 846 644 310 123 51 16 18 4 0 0 0 0 0 ] #1099 : 17759 859 16 [ 723 676 465 206 111 69 34 29 9 0 0 0 0 0 ] #1100 : 22022 1304 118 [ 1242 1124 819 405 167 70 31 18 11 0 0 0 0 0 ] #1101 : 11064 688 0 [ 680 588 434 204 93 30 9 10 6 0 0 0 0 0 ] #1102 : 22155 1665 512 [ 1709 1463 988 514 205 51 19 14 6 0 0 0 0 0 ] #1103 : 24419 1982 0 [ 1915 1682 1245 604 237 63 15 10 5 0 0 0 0 0 ] #1104 : 2129 53 8832 [ 47 37 26 18 14 10 5 3 2 0 0 0 0 0 ] #1105 : 15823 1328 3078 [ 1297 1123 778 434 152 46 14 7 0 0 0 0 0 0 ] #1106 : 20756 1618 43 [ 1618 1411 959 418 175 58 16 9 9 0 0 0 0 0 ] #1107 : 24831 1912 704 [ 1907 1668 1205 548 219 65 23 12 7 0 0 0 0 0 ] #1108 : 27420 2003 8 [ 1984 1678 1218 563 248 79 29 14 10 0 0 0 0 0 ] #1109 : 27547 2099 16 [ 2055 1754 1276 586 262 88 29 12 7 0 0 0 0 0 ] #1110 : 27940 1982 32 [ 1956 1582 1247 563 253 82 30 15 11 0 0 0 0 0 ] #1111 : 27812 2014 0 [ 1946 1759 1245 625 275 73 32 14 7 0 0 0 0 0 ] #1112 : 28222 1601 0 [ 1526 1332 958 475 207 95 59 25 12 0 0 0 0 0 ] #1113 : 23788 1282 0 [ 1296 1076 801 414 196 100 45 20 8 0 0 0 0 0 ] #1114 : 28027 1991 208 [ 1989 1675 1238 593 262 93 31 20 5 0 0 0 0 0 ] #1115 : 27103 1778 552 [ 1795 1488 1029 521 226 102 34 19 10 0 0 0 0 0 ] #1116 : 26660 1745 134 [ 1744 1476 1099 488 218 82 28 21 12 0 0 0 0 0 ] #1117 : 21955 1626 512 [ 1631 1358 1022 478 186 72 15 11 8 0 0 0 0 0 ] #1118 : 22458 1618 6 [ 1604 1373 929 415 192 88 29 12 7 0 0 0 0 0 ] #1119 : 28577 2072 0 [ 2053 1822 1238 567 277 112 36 12 6 0 0 0 0 0 ] #1120 : 9888 90 8208 [ 86 77 64 48 45 25 27 15 5 5 0 0 0 0 ] #1121 : 21017 1700 519 [ 1695 1377 1026 498 210 78 17 8 2 0 0 0 0 0 ] #1122 : 28592 2024 0 [ 2006 1707 1297 606 267 103 39 12 6 0 0 0 0 0 ] #1123 : 28599 1983 32 [ 2057 1699 1218 590 231 120 38 14 7 0 0 0 0 0 ] #1124 : 28551 2074 7 [ 2071 1758 1283 601 300 101 34 12 5 0 0 0 0 0 ] #1125 : 28347 2188 0 [ 2187 1938 1377 665 254 71 24 12 8 0 0 0 0 0 ] #1126 : 28519 1987 4 [ 1937 1687 1240 563 255 120 35 16 6 0 0 0 0 0 ] #1127 : 28527 2007 0 [ 2011 1746 1248 620 259 97 33 11 9 0 0 0 0 0 ] #1128 : 26713 2194 0 [ 2155 1887 1288 594 238 81 26 12 5 0 0 0 0 0 ] #1129 : 24618 1910 2 [ 1860 1633 1167 591 247 82 27 6 4 0 0 0 0 0 ] #1130 : 28229 2232 2 [ 2267 1927 1391 642 287 87 35 6 4 0 0 0 0 0 ] #1131 : 27455 2079 256 [ 2095 1750 1239 605 244 89 31 14 6 0 0 0 0 0 ] #1132 : 29196 1759 0 [ 1762 1471 1059 494 227 110 59 20 11 0 0 0 0 0 ] #1133 : 27831 1753 16 [ 1773 1477 1018 459 218 103 64 23 6 0 0 0 0 0 ] #1134 : 28148 2062 64 [ 1986 1759 1203 535 241 107 46 12 7 0 0 0 0 0 ] #1135 : 28694 2029 2 [ 2100 1751 1207 479 208 111 44 17 10 0 0 0 0 0 ] #1136 : 5227 108 8192 [ 101 85 45 15 11 10 5 0 1 1 1 1 0 0 ] #1137 : 27840 2135 0 [ 2092 1858 1336 634 302 116 28 4 3 0 0 0 0 0 ] #1138 : 29176 1791 0 [ 1782 1577 1154 499 209 92 48 21 14 0 0 0 0 0 ] #1139 : 28243 2251 0 [ 2285 1967 1398 640 265 111 51 2 0 0 0 0 0 0 ] #1140 : 28132 1575 2 [ 1520 1386 962 459 244 118 61 19 9 0 0 0 0 0 ] #1141 : 27041 1734 2 [ 1725 1494 1036 465 230 127 37 16 9 0 0 0 0 0 ] #1142 : 28865 1603 0 [ 1537 1394 985 497 255 128 60 20 8 0 0 0 0 0 ] #1143 : 28829 1797 0 [ 1769 1556 1115 518 259 124 43 15 10 0 0 0 0 0 ] #1144 : 27835 1909 80 [ 1913 1605 1086 516 238 118 44 18 6 0 0 0 0 0 ] #1145 : 28967 1891 7 [ 1911 1650 1099 516 244 128 55 13 8 0 0 0 0 0 ] #1146 : 24942 1882 195 [ 1834 1650 1110 515 215 76 28 18 5 0 0 0 0 0 ] #1147 : 26102 1733 840 [ 1674 1494 980 436 215 99 36 18 11 0 0 0 0 0 ] #1148 : 27966 1861 0 [ 1820 1621 1252 589 250 137 51 10 1 0 0 0 0 0 ] #1149 : 28815 1962 0 [ 1927 1704 1286 658 291 125 37 6 5 0 0 0 0 0 ] #1150 : 28702 1964 1 [ 1932 1709 1222 574 273 131 45 13 3 0 0 0 0 0 ] #1151 : 26631 1732 256 [ 1699 1488 1029 482 256 105 46 10 9 0 0 0 0 0 ] #1152 : 5080 71 8214 [ 72 48 38 29 31 18 8 9 3 2 0 0 0 0 ] #1153 : 27637 1443 128 [ 1365 1162 939 488 256 143 59 16 7 0 0 0 0 0 ] #1154 : 28548 1541 0 [ 1480 1292 989 500 219 125 49 16 15 0 0 0 0 0 ] #1155 : 27867 1526 0 [ 1535 1250 912 471 242 112 46 23 12 0 0 0 0 0 ] #1156 : 27281 1642 83 [ 1619 1367 1054 511 224 113 40 18 10 0 0 0 0 0 ] #1157 : 28890 1935 0 [ 2002 1656 1272 611 270 112 41 12 6 0 0 0 0 0 ] #1158 : 28827 1568 0 [ 1547 1354 971 496 269 126 55 18 10 0 0 0 0 0 ] #1159 : 26501 1229 0 [ 1179 1065 772 411 185 91 41 23 21 0 0 0 0 0 ] #1160 : 26364 1707 139 [ 1640 1464 1103 525 234 105 29 19 7 0 0 0 0 0 ] #1161 : 19677 1378 0 [ 1383 1267 914 449 206 71 32 3 2 0 0 0 0 0 ] #1162 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #1163 : 3403 108 16395 [ 105 91 79 52 31 11 4 4 3 0 0 0 0 0 ] #1164 : 1802 124 0 [ 120 97 76 36 16 6 1 1 1 0 0 0 0 0 ] #1165 : 16379 984 13952 [ 913 895 617 325 154 84 24 7 4 0 0 0 0 0 ] #1166 : 20382 981 0 [ 964 873 624 349 172 89 42 14 9 0 0 0 0 0 ] #1167 : 17284 808 0 [ 772 710 519 263 154 76 32 11 10 0 0 0 0 0 ] #1168 : 6039 74 8200 [ 57 61 59 29 23 15 7 6 3 1 2 0 0 0 ] #1169 : 25068 1684 59 [ 1742 1485 1027 539 226 98 33 10 7 0 0 0 0 0 ] #1170 : 29166 1437 0 [ 1344 1173 921 538 249 126 54 23 12 0 0 0 0 0 ] #1171 : 26031 1798 0 [ 1791 1590 1143 557 226 89 37 11 7 0 0 0 0 0 ] #1172 : 28257 1266 0 [ 1191 1023 873 577 257 126 53 28 7 0 0 0 0 0 ] #1173 : 27786 1575 6 [ 1600 1343 979 472 214 107 46 21 13 0 0 0 0 0 ] #1174 : 13926 681 0 [ 658 582 424 221 98 35 15 13 13 0 0 0 0 0 ] #1175 : 24515 1156 2 [ 1133 1015 712 353 174 83 42 25 17 0 0 0 0 0 ] #1176 : 24995 1624 0 [ 1569 1419 1007 480 227 108 46 11 5 0 0 0 0 0 ] #1177 : 21287 1567 0 [ 1493 1387 949 481 200 85 20 9 4 0 0 0 0 0 ] #1178 : 15734 951 512 [ 1010 764 537 235 111 61 29 14 7 0 0 0 0 0 ] #1179 : 26172 2175 1238 [ 2142 1835 1298 592 250 85 18 8 6 0 0 0 0 0 ] #1180 : 21495 1415 4 [ 1453 1249 848 421 168 63 25 13 11 0 0 0 0 0 ] #1181 : 21534 1466 0 [ 1462 1266 945 458 193 95 36 7 3 0 0 0 0 0 ] #1182 : 29770 1472 1 [ 1466 1298 971 458 197 97 50 32 18 0 0 0 0 0 ] #1183 : 25288 1303 82 [ 1270 1151 873 418 204 97 47 19 12 0 0 0 0 0 ] #1184 : 2740 46 8280 [ 38 35 30 24 21 14 8 6 1 0 0 0 0 0 ] #1185 : 21942 1537 56 [ 1524 1297 906 461 195 75 28 13 6 0 0 0 0 0 ] #1186 : 28632 1466 16 [ 1472 1262 947 488 227 108 50 22 15 0 0 0 0 0 ] #1187 : 28695 1794 0 [ 1783 1596 1236 641 323 129 46 11 0 0 0 0 0 0 ] #1188 : 28918 1708 0 [ 1704 1453 1137 618 298 150 50 14 1 0 0 0 0 0 ] #1189 : 27606 1450 2 [ 1440 1237 935 446 212 108 63 19 12 0 0 0 0 0 ] #1190 : 29047 1249 10 [ 1261 1071 765 393 215 116 66 35 14 0 0 0 0 0 ] #1191 : 28178 1907 128 [ 1836 1665 1195 625 259 104 32 13 8 0 0 0 0 0 ] #1192 : 27366 1807 0 [ 1820 1481 1040 527 232 94 33 22 10 0 0 0 0 0 ] #1193 : 28042 2090 0 [ 2122 1786 1265 599 287 111 46 9 1 0 0 0 0 0 ] #1194 : 28299 2225 0 [ 2173 1893 1383 727 339 110 26 3 0 0 0 0 0 0 ] #1195 : 26832 1745 0 [ 1760 1556 1108 619 266 100 30 15 5 0 0 0 0 0 ] #1196 : 28576 2042 7 [ 2004 1846 1374 711 289 109 34 5 3 0 0 0 0 0 ] #1197 : 26595 1537 111 [ 1513 1299 991 519 254 100 35 18 10 0 0 0 0 0 ] #1198 : 27183 1706 512 [ 1679 1376 1040 582 271 124 42 11 6 0 0 0 0 0 ] #1199 : 28322 1742 5 [ 1674 1518 1103 588 260 91 42 13 12 0 0 0 0 0 ] #1200 : 6274 114 8228 [ 102 76 51 41 37 15 13 10 5 2 0 0 0 0 ] #1201 : 13891 1130 44 [ 1075 810 563 256 105 65 21 10 2 0 0 0 0 0 ] #1202 : 5526 426 2679 [ 416 229 109 63 44 32 13 5 2 0 0 0 0 0 ] #1203 : 9535 728 0 [ 705 493 361 218 115 34 17 3 1 0 0 0 0 0 ] #1204 : 13726 1069 1629 [ 1068 805 540 315 168 69 17 1 1 0 0 0 0 0 ] #1205 : 14834 319 120 [ 290 204 154 116 29 35 28 26 23 0 0 0 0 0 ] #1206 : 25770 1038 8 [ 976 859 641 316 184 90 64 35 14 0 0 0 0 0 ] #1207 : 26178 1596 0 [ 1530 1226 983 521 273 104 36 14 9 0 0 0 0 0 ] #1208 : 28593 1578 3 [ 1525 1348 929 460 223 97 43 27 16 0 0 0 0 0 ] #1209 : 27198 2215 0 [ 2128 1921 1279 650 224 69 16 12 10 0 0 0 0 0 ] #1210 : 27258 2369 0 [ 2324 1889 1439 687 219 66 13 9 9 0 0 0 0 0 ] #1211 : 27994 2265 0 [ 2320 1965 1346 621 232 64 22 11 11 0 0 0 0 0 ] #1212 : 28134 2216 0 [ 2254 1884 1306 599 228 64 16 14 14 0 0 0 0 0 ] #1213 : 26616 2555 75 [ 2442 2133 1523 715 256 61 10 3 4 0 0 0 0 0 ] #1214 : 27239 2302 5 [ 2221 1961 1346 634 227 79 20 11 7 0 0 0 0 0 ] #1215 : 28217 2107 2 [ 1969 1866 1249 554 272 135 47 9 1 0 0 0 0 0 ] #1216 : 2280 64 8306 [ 64 38 31 16 12 13 12 2 1 0 0 0 0 0 ] #1217 : 25443 1546 128 [ 1541 1117 923 467 230 100 43 16 10 0 0 0 0 0 ] #1218 : 27916 1542 0 [ 1510 1347 1008 510 245 117 44 16 12 0 0 0 0 0 ] #1219 : 27791 1941 0 [ 1951 1690 1211 676 277 91 22 11 8 0 0 0 0 0 ] #1220 : 28780 1909 0 [ 1956 1696 1288 709 308 102 17 10 8 0 0 0 0 0 ] #1221 : 28523 2041 0 [ 1975 1834 1336 706 305 115 16 8 5 0 0 0 0 0 ] #1222 : 28433 2072 0 [ 2057 1806 1319 714 316 94 22 10 4 0 0 0 0 0 ] #1223 : 28609 2048 0 [ 2105 1866 1383 739 320 92 27 8 2 0 0 0 0 0 ] #1224 : 28340 1911 0 [ 1932 1686 1267 674 254 106 36 10 6 0 0 0 0 0 ] #1225 : 28135 2302 3 [ 2267 1932 1497 736 333 88 13 7 1 0 0 0 0 0 ] #1226 : 28094 2322 0 [ 2366 2060 1504 765 322 99 12 3 0 0 0 0 0 0 ] #1227 : 27648 1697 0 [ 1642 1457 991 433 247 138 60 15 6 0 0 0 0 0 ] #1228 : 28811 1916 0 [ 1847 1666 1200 596 249 117 49 15 5 0 0 0 0 0 ] #1229 : 28640 1693 1 [ 1664 1454 1031 523 257 104 40 17 14 0 0 0 0 0 ] #1230 : 29000 1774 1 [ 1716 1512 1125 650 290 104 29 13 12 0 0 0 0 0 ] #1231 : 29248 1754 3 [ 1772 1518 1110 552 252 97 36 22 13 0 0 0 0 0 ] #1232 : 1642 91 8193 [ 88 89 60 26 16 13 2 1 0 0 0 0 0 0 ] #1233 : 24372 538 256 [ 472 196 281 126 96 74 47 35 39 0 0 0 0 0 ] #1234 : 25099 1265 0 [ 1273 1043 791 406 218 140 71 16 3 0 0 0 0 0 ] #1235 : 27277 1191 0 [ 1119 1025 799 446 260 142 67 22 6 0 0 0 0 0 ] #1236 : 26682 1447 0 [ 1440 1259 901 450 226 130 63 17 6 0 0 0 0 0 ] #1237 : 23735 1369 0 [ 1399 1238 857 432 239 138 46 10 2 0 0 0 0 0 ] #1238 : 28740 1306 0 [ 1336 1130 830 354 235 110 53 29 18 0 0 0 0 0 ] #1239 : 28558 1693 256 [ 1670 1456 1052 475 254 134 55 16 8 0 0 0 0 0 ] #1240 : 29324 1501 32 [ 1562 1307 977 483 258 140 65 26 5 0 0 0 0 0 ] #1241 : 13762 654 0 [ 656 489 284 140 111 59 35 15 8 0 0 0 0 0 ] #1242 : 26026 1209 0 [ 1222 1036 777 393 218 126 68 22 7 0 0 0 0 0 ] #1243 : 28694 1567 0 [ 1530 1364 967 491 242 121 59 32 4 0 0 0 0 0 ] #1244 : 28439 1707 0 [ 1641 1535 1074 515 279 119 46 14 9 0 0 0 0 0 ] #1245 : 27908 1989 131 [ 1882 1585 1270 624 255 116 28 9 8 0 0 0 0 0 ] #1246 : 29035 1836 0 [ 1797 1581 1181 583 230 126 31 15 12 0 0 0 0 0 ] #1247 : 29262 1620 27 [ 1632 1343 1034 511 229 112 44 20 16 0 0 0 0 0 ] #1248 : 2706 54 8229 [ 50 36 34 34 30 7 9 3 2 0 0 0 0 0 ] #1249 : 24789 1540 630 [ 1465 1236 899 457 216 111 47 16 6 0 0 0 0 0 ] #1250 : 26462 1375 0 [ 1340 911 775 395 191 123 55 27 12 0 0 0 0 0 ] #1251 : 29039 1445 0 [ 1403 1172 851 430 199 119 47 28 19 0 0 0 0 0 ] #1252 : 26655 1977 0 [ 1975 1700 1236 564 261 93 35 11 4 0 0 0 0 0 ] #1253 : 24556 1524 6 [ 1570 1335 945 481 215 103 37 14 7 0 0 0 0 0 ] #1254 : 26046 1257 52 [ 1274 1102 768 391 239 124 64 23 6 0 0 0 0 0 ] #1255 : 23010 1231 1 [ 1248 1055 815 431 241 102 45 19 2 0 0 0 0 0 ] #1256 : 29326 1525 0 [ 1512 1273 879 377 187 112 54 30 19 0 0 0 0 0 ] #1257 : 29244 1460 5 [ 1502 1247 888 448 230 109 55 32 13 0 0 0 0 0 ] #1258 : 29391 1684 1 [ 1651 1486 1064 538 277 126 59 19 6 0 0 0 0 0 ] #1259 : 24700 1430 128 [ 1424 1186 870 446 188 111 44 17 9 0 0 0 0 0 ] #1260 : 28443 1860 0 [ 1807 1614 1106 557 246 119 40 19 7 0 0 0 0 0 ] #1261 : 28803 1464 3 [ 1463 1192 865 435 208 103 72 31 11 0 0 0 0 0 ] #1262 : 29192 1545 0 [ 1440 1324 984 488 221 139 83 23 4 0 0 0 0 0 ] #1263 : 25372 1236 0 [ 1190 1093 767 366 220 134 54 15 11 0 0 0 0 0 ] #1264 : 2190 42 8544 [ 28 25 26 19 18 5 4 5 2 0 0 0 0 0 ] #1265 : 21093 1202 416 [ 1141 1010 689 343 199 103 49 14 4 0 0 0 0 0 ] #1266 : 13931 653 0 [ 643 562 365 192 107 55 33 14 7 0 0 0 0 0 ] #1267 : 10150 363 6 [ 344 295 176 118 67 45 27 14 6 0 0 0 0 0 ] #1268 : 14756 692 1487 [ 692 612 464 225 126 64 30 13 6 0 0 0 0 0 ] #1269 : 15094 625 0 [ 638 546 391 187 120 74 32 15 8 0 0 0 0 0 ] #1270 : 22722 1055 0 [ 1048 957 722 371 193 96 55 17 8 0 0 0 0 0 ] #1271 : 19136 869 6144 [ 874 779 500 290 156 85 48 16 8 0 0 0 0 0 ] #1272 : 24284 1420 1 [ 1410 1181 950 463 233 104 55 13 3 0 0 0 0 0 ] #1273 : 15571 1061 1150 [ 1051 938 611 295 124 65 35 6 3 0 0 0 0 0 ] #1274 : 26957 1785 0 [ 1837 1606 1093 520 246 117 49 10 5 0 0 0 0 0 ] #1275 : 17257 974 24 [ 959 825 594 292 139 81 28 14 6 0 0 0 0 0 ] #1276 : 25207 1473 0 [ 1489 1273 881 386 214 132 56 18 4 0 0 0 0 0 ] #1277 : 28228 1665 0 [ 1722 1419 985 482 248 128 40 21 10 0 0 0 0 0 ] #1278 : 27277 1698 0 [ 1685 1440 994 428 209 132 53 20 7 0 0 0 0 0 ] #1279 : 27316 1684 54 [ 1700 1394 999 454 224 125 55 20 6 0 0 0 0 0 ] ext4/loop0/options 0000444 00000000313 14720725046 0010101 0 ustar 00 rw discard delalloc barrier user_xattr acl resuid=0 resgid=0 errors=continue commit=5 min_batch_time=0 max_batch_time=15000 stripe=0 data=ordered inode_readahead_blks=32 init_itable=10 max_dir_size_kb=0 ext4/loop0/mb_groups 0000444 00000007262 14720725046 0010415 0 ustar 00 #group: free frags first [ 2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7 2^8 2^9 2^10 2^11 2^12 2^13 ] #0 : 31269 13 777 [ 13 12 12 10 10 11 10 2 2 1 0 0 1 3 ] #1 : 31997 1 771 [ 1 0 1 1 1 1 1 1 0 0 1 1 1 3 ] #2 : 32252 1 516 [ 0 0 1 1 1 1 1 1 1 0 1 1 1 3 ] #3 : 31995 1 773 [ 1 1 0 1 1 1 1 1 0 0 1 1 1 3 ] #4 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #5 : 31997 1 771 [ 1 0 1 1 1 1 1 1 0 0 1 1 1 3 ] #6 : 32252 1 516 [ 0 0 1 1 1 1 1 1 1 0 1 1 1 3 ] #7 : 31997 1 771 [ 1 0 1 1 1 1 1 1 0 0 1 1 1 3 ] #8 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #9 : 31997 1 771 [ 1 0 1 1 1 1 1 1 0 0 1 1 1 3 ] #10 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #11 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #12 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #13 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #14 : 19306 7 524 [ 2 2 3 5 3 4 2 4 4 2 4 0 1 1 ] #15 : 0 0 32768 [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] #16 : 31707 1 1061 [ 1 1 0 1 1 0 1 1 1 1 0 1 1 3 ] #17 : 31856 2 514 [ 0 2 1 1 2 2 2 1 1 1 2 2 2 2 ] #18 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #19 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #20 : 32252 1 516 [ 0 0 1 1 1 1 1 1 1 0 1 1 1 3 ] #21 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #22 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #23 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #24 : 32253 1 515 [ 1 0 1 1 1 1 1 1 1 0 1 1 1 3 ] #25 : 31997 1 771 [ 1 0 1 1 1 1 1 1 0 0 1 1 1 3 ] #26 : 32252 1 516 [ 0 0 1 1 1 1 1 1 1 0 1 1 1 3 ] #27 : 31997 1 771 [ 1 0 1 1 1 1 1 1 0 0 1 1 1 3 ] #28 : 32252 1 516 [ 0 0 1 1 1 1 1 1 1 0 1 1 1 3 ] #29 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #30 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] #31 : 32254 1 514 [ 0 1 1 1 1 1 1 1 1 0 1 1 1 3 ] jbd2/sda1-8/info 0000444 00000000605 14720725046 0007246 0 ustar 00 37053927 transactions (33066993 requested), each up to 8192 blocks average: 0ms waiting for transaction 2ms request delay 1666ms running transaction 0ms transaction was being locked 0ms flushing data (in ordered mode) 20ms logging transaction 6316us average transaction commit time 43 handles per transaction 11 blocks per transaction 12 logged blocks per transaction jbd2/loop0-8/info 0000444 00000000600 14720725046 0007442 0 ustar 00 844647 transactions (185210 requested), each up to 8192 blocks average: 0ms waiting for transaction 0ms request delay 5419ms running transaction 0ms transaction was being locked 0ms flushing data (in ordered mode) 64ms logging transaction 13281us average transaction commit time 59 handles per transaction 6 blocks per transaction 7 logged blocks per transaction
| ver. 1.4 |
Github
|
.
| PHP 8.0.30 | Génération de la page: 0.07 |
proxy
|
phpinfo
|
Réglages