Fix line endings in a few files
Showing
25 changed files
with
4376 additions
and
4376 deletions
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | * PHPExcel | 3 | * PHPExcel |
| 4 | * | 4 | * |
| 5 | * Copyright (c) 2006 - 2011 PHPExcel | 5 | * Copyright (c) 2006 - 2011 PHPExcel |
| 6 | * | 6 | * |
| 7 | * This library is free software; you can redistribute it and/or | 7 | * This library is free software; you can redistribute it and/or |
| 8 | * modify it under the terms of the GNU Lesser General Public | 8 | * modify it under the terms of the GNU Lesser General Public |
| 9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
| 10 | * version 2.1 of the License, or (at your option) any later version. | 10 | * version 2.1 of the License, or (at your option) any later version. |
| 11 | * | 11 | * |
| 12 | * This library is distributed in the hope that it will be useful, | 12 | * This library is distributed in the hope that it will be useful, |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | * Lesser General Public License for more details. | 15 | * Lesser General Public License for more details. |
| 16 | * | 16 | * |
| 17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
| 18 | * License along with this library; if not, write to the Free Software | 18 | * License along with this library; if not, write to the Free Software |
| 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 20 | * | 20 | * |
| 21 | * @category PHPExcel | 21 | * @category PHPExcel |
| 22 | * @package PHPExcel_CachedObjectStorage | 22 | * @package PHPExcel_CachedObjectStorage |
| 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL | 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL |
| 25 | * @version 1.7.6, 2011-02-27 | 25 | * @version 1.7.6, 2011-02-27 |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * PHPExcel_CachedObjectStorage_APC | 30 | * PHPExcel_CachedObjectStorage_APC |
| 31 | * | 31 | * |
| 32 | * @category PHPExcel | 32 | * @category PHPExcel |
| 33 | * @package PHPExcel_CachedObjectStorage | 33 | * @package PHPExcel_CachedObjectStorage |
| 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 35 | */ | 35 | */ |
| 36 | class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { | 36 | class PHPExcel_CachedObjectStorage_APC extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { |
| 37 | 37 | ||
| 38 | private $_cachePrefix = null; | 38 | private $_cachePrefix = null; |
| 39 | 39 | ||
| 40 | private $_cacheTime = 600; | 40 | private $_cacheTime = 600; |
| 41 | 41 | ||
| 42 | 42 | ||
| 43 | private function _storeData() { | 43 | private function _storeData() { |
| 44 | $this->_currentObject->detach(); | 44 | $this->_currentObject->detach(); |
| 45 | 45 | ||
| 46 | if (!apc_store($this->_cachePrefix.$this->_currentObjectID.'.cache',serialize($this->_currentObject),$this->_cacheTime)) { | 46 | if (!apc_store($this->_cachePrefix.$this->_currentObjectID.'.cache',serialize($this->_currentObject),$this->_cacheTime)) { |
| 47 | $this->__destruct(); | 47 | $this->__destruct(); |
| 48 | throw new Exception('Failed to store cell '.$cellID.' in APC'); | 48 | throw new Exception('Failed to store cell '.$cellID.' in APC'); |
| 49 | } | 49 | } |
| 50 | $this->_currentObjectID = $this->_currentObject = null; | 50 | $this->_currentObjectID = $this->_currentObject = null; |
| 51 | } // function _storeData() | 51 | } // function _storeData() |
| 52 | 52 | ||
| 53 | 53 | ||
| 54 | /** | 54 | /** |
| 55 | * Add or Update a cell in cache identified by coordinate address | 55 | * Add or Update a cell in cache identified by coordinate address |
| 56 | * | 56 | * |
| 57 | * @param string $pCoord Coordinate address of the cell to update | 57 | * @param string $pCoord Coordinate address of the cell to update |
| 58 | * @param PHPExcel_Cell $cell Cell to update | 58 | * @param PHPExcel_Cell $cell Cell to update |
| 59 | * @return void | 59 | * @return void |
| 60 | * @throws Exception | 60 | * @throws Exception |
| 61 | */ | 61 | */ |
| 62 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { | 62 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { |
| 63 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { | 63 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { |
| 64 | $this->_storeData(); | 64 | $this->_storeData(); |
| 65 | } | 65 | } |
| 66 | $this->_cellCache[$pCoord] = true; | 66 | $this->_cellCache[$pCoord] = true; |
| 67 | 67 | ||
| 68 | $this->_currentObjectID = $pCoord; | 68 | $this->_currentObjectID = $pCoord; |
| 69 | $this->_currentObject = $cell; | 69 | $this->_currentObject = $cell; |
| 70 | 70 | ||
| 71 | return $cell; | 71 | return $cell; |
| 72 | } // function addCacheData() | 72 | } // function addCacheData() |
| 73 | 73 | ||
| 74 | 74 | ||
| 75 | /** | 75 | /** |
| 76 | * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? | 76 | * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? |
| 77 | * | 77 | * |
| 78 | * @param string $pCoord Coordinate address of the cell to check | 78 | * @param string $pCoord Coordinate address of the cell to check |
| 79 | * @return void | 79 | * @return void |
| 80 | * @return boolean | 80 | * @return boolean |
| 81 | */ | 81 | */ |
| 82 | public function isDataSet($pCoord) { | 82 | public function isDataSet($pCoord) { |
| 83 | // Check if the requested entry is the current object, or exists in the cache | 83 | // Check if the requested entry is the current object, or exists in the cache |
| 84 | if (parent::isDataSet($pCoord)) { | 84 | if (parent::isDataSet($pCoord)) { |
| 85 | if ($this->_currentObjectID == $pCoord) { | 85 | if ($this->_currentObjectID == $pCoord) { |
| 86 | return true; | 86 | return true; |
| 87 | } | 87 | } |
| 88 | // Check if the requested entry still exists in apc | 88 | // Check if the requested entry still exists in apc |
| 89 | $success = apc_fetch($this->_cachePrefix.$pCoord.'.cache'); | 89 | $success = apc_fetch($this->_cachePrefix.$pCoord.'.cache'); |
| 90 | if ($success === false) { | 90 | if ($success === false) { |
| 91 | // Entry no longer exists in APC, so clear it from the cache array | 91 | // Entry no longer exists in APC, so clear it from the cache array |
| 92 | parent::deleteCacheData($pCoord); | 92 | parent::deleteCacheData($pCoord); |
| 93 | throw new Exception('Cell entry '.$cellID.' no longer exists in APC'); | 93 | throw new Exception('Cell entry '.$cellID.' no longer exists in APC'); |
| 94 | } | 94 | } |
| 95 | return true; | 95 | return true; |
| 96 | } | 96 | } |
| 97 | return false; | 97 | return false; |
| 98 | } // function isDataSet() | 98 | } // function isDataSet() |
| 99 | 99 | ||
| 100 | 100 | ||
| 101 | /** | 101 | /** |
| 102 | * Get cell at a specific coordinate | 102 | * Get cell at a specific coordinate |
| 103 | * | 103 | * |
| 104 | * @param string $pCoord Coordinate of the cell | 104 | * @param string $pCoord Coordinate of the cell |
| 105 | * @throws Exception | 105 | * @throws Exception |
| 106 | * @return PHPExcel_Cell Cell that was found, or null if not found | 106 | * @return PHPExcel_Cell Cell that was found, or null if not found |
| 107 | */ | 107 | */ |
| 108 | public function getCacheData($pCoord) { | 108 | public function getCacheData($pCoord) { |
| 109 | if ($pCoord === $this->_currentObjectID) { | 109 | if ($pCoord === $this->_currentObjectID) { |
| 110 | return $this->_currentObject; | 110 | return $this->_currentObject; |
| 111 | } | 111 | } |
| 112 | $this->_storeData(); | 112 | $this->_storeData(); |
| 113 | 113 | ||
| 114 | // Check if the entry that has been requested actually exists | 114 | // Check if the entry that has been requested actually exists |
| 115 | if (parent::isDataSet($pCoord)) { | 115 | if (parent::isDataSet($pCoord)) { |
| 116 | $obj = apc_fetch($this->_cachePrefix.$pCoord.'.cache'); | 116 | $obj = apc_fetch($this->_cachePrefix.$pCoord.'.cache'); |
| 117 | if ($obj === false) { | 117 | if ($obj === false) { |
| 118 | // Entry no longer exists in APC, so clear it from the cache array | 118 | // Entry no longer exists in APC, so clear it from the cache array |
| 119 | parent::deleteCacheData($pCoord); | 119 | parent::deleteCacheData($pCoord); |
| 120 | throw new Exception('Cell entry '.$cellID.' no longer exists in APC'); | 120 | throw new Exception('Cell entry '.$cellID.' no longer exists in APC'); |
| 121 | } | 121 | } |
| 122 | } else { | 122 | } else { |
| 123 | // Return null if requested entry doesn't exist in cache | 123 | // Return null if requested entry doesn't exist in cache |
| 124 | return null; | 124 | return null; |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | // Set current entry to the requested entry | 127 | // Set current entry to the requested entry |
| 128 | $this->_currentObjectID = $pCoord; | 128 | $this->_currentObjectID = $pCoord; |
| 129 | $this->_currentObject = unserialize($obj); | 129 | $this->_currentObject = unserialize($obj); |
| 130 | // Re-attach the parent worksheet | 130 | // Re-attach the parent worksheet |
| 131 | $this->_currentObject->attach($this->_parent); | 131 | $this->_currentObject->attach($this->_parent); |
| 132 | 132 | ||
| 133 | // Return requested entry | 133 | // Return requested entry |
| 134 | return $this->_currentObject; | 134 | return $this->_currentObject; |
| 135 | } // function getCacheData() | 135 | } // function getCacheData() |
| 136 | 136 | ||
| 137 | 137 | ||
| 138 | /** | 138 | /** |
| 139 | * Delete a cell in cache identified by coordinate address | 139 | * Delete a cell in cache identified by coordinate address |
| 140 | * | 140 | * |
| 141 | * @param string $pCoord Coordinate address of the cell to delete | 141 | * @param string $pCoord Coordinate address of the cell to delete |
| 142 | * @throws Exception | 142 | * @throws Exception |
| 143 | */ | 143 | */ |
| 144 | public function deleteCacheData($pCoord) { | 144 | public function deleteCacheData($pCoord) { |
| 145 | // Delete the entry from APC | 145 | // Delete the entry from APC |
| 146 | apc_delete($this->_cachePrefix.$pCoord.'.cache'); | 146 | apc_delete($this->_cachePrefix.$pCoord.'.cache'); |
| 147 | 147 | ||
| 148 | // Delete the entry from our cell address array | 148 | // Delete the entry from our cell address array |
| 149 | parent::deleteCacheData($pCoord); | 149 | parent::deleteCacheData($pCoord); |
| 150 | } // function deleteCacheData() | 150 | } // function deleteCacheData() |
| 151 | 151 | ||
| 152 | 152 | ||
| 153 | /** | 153 | /** |
| 154 | * Clone the cell collection | 154 | * Clone the cell collection |
| 155 | * | 155 | * |
| 156 | * @return void | 156 | * @return void |
| 157 | */ | 157 | */ |
| 158 | public function copyCellCollection(PHPExcel_Worksheet $parent) { | 158 | public function copyCellCollection(PHPExcel_Worksheet $parent) { |
| 159 | parent::copyCellCollection($parent); | 159 | parent::copyCellCollection($parent); |
| 160 | // Get a new id for the new file name | 160 | // Get a new id for the new file name |
| 161 | $baseUnique = $this->_getUniqueID(); | 161 | $baseUnique = $this->_getUniqueID(); |
| 162 | $newCachePrefix = substr(md5($baseUnique),0,8).'.'; | 162 | $newCachePrefix = substr(md5($baseUnique),0,8).'.'; |
| 163 | $cacheList = $this->getCellList(); | 163 | $cacheList = $this->getCellList(); |
| 164 | foreach($cacheList as $cellID) { | 164 | foreach($cacheList as $cellID) { |
| 165 | if ($cellID != $this->_currentObjectID) { | 165 | if ($cellID != $this->_currentObjectID) { |
| 166 | $obj = apc_fetch($this->_cachePrefix.$cellID.'.cache'); | 166 | $obj = apc_fetch($this->_cachePrefix.$cellID.'.cache'); |
| 167 | if ($obj === false) { | 167 | if ($obj === false) { |
| 168 | // Entry no longer exists in APC, so clear it from the cache array | 168 | // Entry no longer exists in APC, so clear it from the cache array |
| 169 | parent::deleteCacheData($cellID); | 169 | parent::deleteCacheData($cellID); |
| 170 | throw new Exception('Cell entry '.$cellID.' no longer exists in APC'); | 170 | throw new Exception('Cell entry '.$cellID.' no longer exists in APC'); |
| 171 | } | 171 | } |
| 172 | if (!apc_store($newCachePrefix.$cellID.'.cache',$obj,$this->_cacheTime)) { | 172 | if (!apc_store($newCachePrefix.$cellID.'.cache',$obj,$this->_cacheTime)) { |
| 173 | $this->__destruct(); | 173 | $this->__destruct(); |
| 174 | throw new Exception('Failed to store cell '.$cellID.' in APC'); | 174 | throw new Exception('Failed to store cell '.$cellID.' in APC'); |
| 175 | } | 175 | } |
| 176 | } | 176 | } |
| 177 | } | 177 | } |
| 178 | $this->_cachePrefix = $newCachePrefix; | 178 | $this->_cachePrefix = $newCachePrefix; |
| 179 | } // function copyCellCollection() | 179 | } // function copyCellCollection() |
| 180 | 180 | ||
| 181 | 181 | ||
| 182 | public function unsetWorksheetCells() { | 182 | public function unsetWorksheetCells() { |
| 183 | if(!is_null($this->_currentObject)) { | 183 | if(!is_null($this->_currentObject)) { |
| 184 | $this->_currentObject->detach(); | 184 | $this->_currentObject->detach(); |
| 185 | $this->_currentObject = $this->_currentObjectID = null; | 185 | $this->_currentObject = $this->_currentObjectID = null; |
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | // Flush the APC cache | 188 | // Flush the APC cache |
| 189 | $this->__destruct(); | 189 | $this->__destruct(); |
| 190 | 190 | ||
| 191 | $this->_cellCache = array(); | 191 | $this->_cellCache = array(); |
| 192 | 192 | ||
| 193 | // detach ourself from the worksheet, so that it can then delete this object successfully | 193 | // detach ourself from the worksheet, so that it can then delete this object successfully |
| 194 | $this->_parent = null; | 194 | $this->_parent = null; |
| 195 | } // function unsetWorksheetCells() | 195 | } // function unsetWorksheetCells() |
| 196 | 196 | ||
| 197 | 197 | ||
| 198 | public function __construct(PHPExcel_Worksheet $parent, $arguments) { | 198 | public function __construct(PHPExcel_Worksheet $parent, $arguments) { |
| 199 | $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; | 199 | $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; |
| 200 | 200 | ||
| 201 | if (is_null($this->_cachePrefix)) { | 201 | if (is_null($this->_cachePrefix)) { |
| 202 | $baseUnique = $this->_getUniqueID(); | 202 | $baseUnique = $this->_getUniqueID(); |
| 203 | $this->_cachePrefix = substr(md5($baseUnique),0,8).'.'; | 203 | $this->_cachePrefix = substr(md5($baseUnique),0,8).'.'; |
| 204 | $this->_cacheTime = $cacheTime; | 204 | $this->_cacheTime = $cacheTime; |
| 205 | 205 | ||
| 206 | parent::__construct($parent); | 206 | parent::__construct($parent); |
| 207 | } | 207 | } |
| 208 | } // function __construct() | 208 | } // function __construct() |
| 209 | 209 | ||
| 210 | 210 | ||
| 211 | public function __destruct() { | 211 | public function __destruct() { |
| 212 | $cacheList = $this->getCellList(); | 212 | $cacheList = $this->getCellList(); |
| 213 | foreach($cacheList as $cellID) { | 213 | foreach($cacheList as $cellID) { |
| 214 | apc_delete($this->_cachePrefix.$cellID.'.cache'); | 214 | apc_delete($this->_cachePrefix.$cellID.'.cache'); |
| 215 | } | 215 | } |
| 216 | } // function __destruct() | 216 | } // function __destruct() |
| 217 | 217 | ||
| 218 | } | 218 | } | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | * PHPExcel | 3 | * PHPExcel |
| 4 | * | 4 | * |
| 5 | * Copyright (c) 2006 - 2011 PHPExcel | 5 | * Copyright (c) 2006 - 2011 PHPExcel |
| 6 | * | 6 | * |
| 7 | * This library is free software; you can redistribute it and/or | 7 | * This library is free software; you can redistribute it and/or |
| 8 | * modify it under the terms of the GNU Lesser General Public | 8 | * modify it under the terms of the GNU Lesser General Public |
| 9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
| 10 | * version 2.1 of the License, or (at your option) any later version. | 10 | * version 2.1 of the License, or (at your option) any later version. |
| 11 | * | 11 | * |
| 12 | * This library is distributed in the hope that it will be useful, | 12 | * This library is distributed in the hope that it will be useful, |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | * Lesser General Public License for more details. | 15 | * Lesser General Public License for more details. |
| 16 | * | 16 | * |
| 17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
| 18 | * License along with this library; if not, write to the Free Software | 18 | * License along with this library; if not, write to the Free Software |
| 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 20 | * | 20 | * |
| 21 | * @category PHPExcel | 21 | * @category PHPExcel |
| 22 | * @package PHPExcel_CachedObjectStorage | 22 | * @package PHPExcel_CachedObjectStorage |
| 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL | 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL |
| 25 | * @version 1.7.6, 2011-02-27 | 25 | * @version 1.7.6, 2011-02-27 |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * PHPExcel_CachedObjectStorage_DiscISAM | 30 | * PHPExcel_CachedObjectStorage_DiscISAM |
| 31 | * | 31 | * |
| 32 | * @category PHPExcel | 32 | * @category PHPExcel |
| 33 | * @package PHPExcel_CachedObjectStorage | 33 | * @package PHPExcel_CachedObjectStorage |
| 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 35 | */ | 35 | */ |
| 36 | class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { | 36 | class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { |
| 37 | 37 | ||
| 38 | private $_fileName = null; | 38 | private $_fileName = null; |
| 39 | private $_fileHandle = null; | 39 | private $_fileHandle = null; |
| 40 | 40 | ||
| 41 | 41 | ||
| 42 | private function _storeData() { | 42 | private function _storeData() { |
| 43 | $this->_currentObject->detach(); | 43 | $this->_currentObject->detach(); |
| 44 | 44 | ||
| 45 | fseek($this->_fileHandle,0,SEEK_END); | 45 | fseek($this->_fileHandle,0,SEEK_END); |
| 46 | $offset = ftell($this->_fileHandle); | 46 | $offset = ftell($this->_fileHandle); |
| 47 | fwrite($this->_fileHandle, serialize($this->_currentObject)); | 47 | fwrite($this->_fileHandle, serialize($this->_currentObject)); |
| 48 | $this->_cellCache[$this->_currentObjectID] = array('ptr' => $offset, | 48 | $this->_cellCache[$this->_currentObjectID] = array('ptr' => $offset, |
| 49 | 'sz' => ftell($this->_fileHandle) - $offset | 49 | 'sz' => ftell($this->_fileHandle) - $offset |
| 50 | ); | 50 | ); |
| 51 | $this->_currentObjectID = $this->_currentObject = null; | 51 | $this->_currentObjectID = $this->_currentObject = null; |
| 52 | } // function _storeData() | 52 | } // function _storeData() |
| 53 | 53 | ||
| 54 | 54 | ||
| 55 | /** | 55 | /** |
| 56 | * Add or Update a cell in cache identified by coordinate address | 56 | * Add or Update a cell in cache identified by coordinate address |
| 57 | * | 57 | * |
| 58 | * @param string $pCoord Coordinate address of the cell to update | 58 | * @param string $pCoord Coordinate address of the cell to update |
| 59 | * @param PHPExcel_Cell $cell Cell to update | 59 | * @param PHPExcel_Cell $cell Cell to update |
| 60 | * @return void | 60 | * @return void |
| 61 | * @throws Exception | 61 | * @throws Exception |
| 62 | */ | 62 | */ |
| 63 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { | 63 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { |
| 64 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { | 64 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { |
| 65 | $this->_storeData(); | 65 | $this->_storeData(); |
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | $this->_currentObjectID = $pCoord; | 68 | $this->_currentObjectID = $pCoord; |
| 69 | $this->_currentObject = $cell; | 69 | $this->_currentObject = $cell; |
| 70 | 70 | ||
| 71 | return $cell; | 71 | return $cell; |
| 72 | } // function addCacheData() | 72 | } // function addCacheData() |
| 73 | 73 | ||
| 74 | 74 | ||
| 75 | /** | 75 | /** |
| 76 | * Get cell at a specific coordinate | 76 | * Get cell at a specific coordinate |
| 77 | * | 77 | * |
| 78 | * @param string $pCoord Coordinate of the cell | 78 | * @param string $pCoord Coordinate of the cell |
| 79 | * @throws Exception | 79 | * @throws Exception |
| 80 | * @return PHPExcel_Cell Cell that was found, or null if not found | 80 | * @return PHPExcel_Cell Cell that was found, or null if not found |
| 81 | */ | 81 | */ |
| 82 | public function getCacheData($pCoord) { | 82 | public function getCacheData($pCoord) { |
| 83 | if ($pCoord === $this->_currentObjectID) { | 83 | if ($pCoord === $this->_currentObjectID) { |
| 84 | return $this->_currentObject; | 84 | return $this->_currentObject; |
| 85 | } | 85 | } |
| 86 | $this->_storeData(); | 86 | $this->_storeData(); |
| 87 | 87 | ||
| 88 | // Check if the entry that has been requested actually exists | 88 | // Check if the entry that has been requested actually exists |
| 89 | if (!isset($this->_cellCache[$pCoord])) { | 89 | if (!isset($this->_cellCache[$pCoord])) { |
| 90 | // Return null if requested entry doesn't exist in cache | 90 | // Return null if requested entry doesn't exist in cache |
| 91 | return null; | 91 | return null; |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | // Set current entry to the requested entry | 94 | // Set current entry to the requested entry |
| 95 | $this->_currentObjectID = $pCoord; | 95 | $this->_currentObjectID = $pCoord; |
| 96 | fseek($this->_fileHandle,$this->_cellCache[$pCoord]['ptr']); | 96 | fseek($this->_fileHandle,$this->_cellCache[$pCoord]['ptr']); |
| 97 | $this->_currentObject = unserialize(fread($this->_fileHandle,$this->_cellCache[$pCoord]['sz'])); | 97 | $this->_currentObject = unserialize(fread($this->_fileHandle,$this->_cellCache[$pCoord]['sz'])); |
| 98 | // Re-attach the parent worksheet | 98 | // Re-attach the parent worksheet |
| 99 | $this->_currentObject->attach($this->_parent); | 99 | $this->_currentObject->attach($this->_parent); |
| 100 | 100 | ||
| 101 | // Return requested entry | 101 | // Return requested entry |
| 102 | return $this->_currentObject; | 102 | return $this->_currentObject; |
| 103 | } // function getCacheData() | 103 | } // function getCacheData() |
| 104 | 104 | ||
| 105 | 105 | ||
| 106 | /** | 106 | /** |
| 107 | * Clone the cell collection | 107 | * Clone the cell collection |
| 108 | * | 108 | * |
| 109 | * @return void | 109 | * @return void |
| 110 | */ | 110 | */ |
| 111 | public function copyCellCollection(PHPExcel_Worksheet $parent) { | 111 | public function copyCellCollection(PHPExcel_Worksheet $parent) { |
| 112 | parent::copyCellCollection($parent); | 112 | parent::copyCellCollection($parent); |
| 113 | // Get a new id for the new file name | 113 | // Get a new id for the new file name |
| 114 | $baseUnique = $this->_getUniqueID(); | 114 | $baseUnique = $this->_getUniqueID(); |
| 115 | $newFileName = PHPExcel_Shared_File::sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache'; | 115 | $newFileName = PHPExcel_Shared_File::sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache'; |
| 116 | // Copy the existing cell cache file | 116 | // Copy the existing cell cache file |
| 117 | copy ($this->_fileName,$newFileName); | 117 | copy ($this->_fileName,$newFileName); |
| 118 | $this->_fileName = $newFileName; | 118 | $this->_fileName = $newFileName; |
| 119 | // Open the copied cell cache file | 119 | // Open the copied cell cache file |
| 120 | $this->_fileHandle = fopen($this->_fileName,'a+'); | 120 | $this->_fileHandle = fopen($this->_fileName,'a+'); |
| 121 | } // function copyCellCollection() | 121 | } // function copyCellCollection() |
| 122 | 122 | ||
| 123 | 123 | ||
| 124 | public function unsetWorksheetCells() { | 124 | public function unsetWorksheetCells() { |
| 125 | if(!is_null($this->_currentObject)) { | 125 | if(!is_null($this->_currentObject)) { |
| 126 | $this->_currentObject->detach(); | 126 | $this->_currentObject->detach(); |
| 127 | $this->_currentObject = $this->_currentObjectID = null; | 127 | $this->_currentObject = $this->_currentObjectID = null; |
| 128 | } | 128 | } |
| 129 | $this->_cellCache = array(); | 129 | $this->_cellCache = array(); |
| 130 | 130 | ||
| 131 | // detach ourself from the worksheet, so that it can then delete this object successfully | 131 | // detach ourself from the worksheet, so that it can then delete this object successfully |
| 132 | $this->_parent = null; | 132 | $this->_parent = null; |
| 133 | 133 | ||
| 134 | // Close down the temporary cache file | 134 | // Close down the temporary cache file |
| 135 | $this->__destruct(); | 135 | $this->__destruct(); |
| 136 | } // function unsetWorksheetCells() | 136 | } // function unsetWorksheetCells() |
| 137 | 137 | ||
| 138 | 138 | ||
| 139 | public function __construct(PHPExcel_Worksheet $parent) { | 139 | public function __construct(PHPExcel_Worksheet $parent) { |
| 140 | parent::__construct($parent); | 140 | parent::__construct($parent); |
| 141 | if (is_null($this->_fileHandle)) { | 141 | if (is_null($this->_fileHandle)) { |
| 142 | $baseUnique = $this->_getUniqueID(); | 142 | $baseUnique = $this->_getUniqueID(); |
| 143 | $this->_fileName = PHPExcel_Shared_File::sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache'; | 143 | $this->_fileName = PHPExcel_Shared_File::sys_get_temp_dir().'/PHPExcel.'.$baseUnique.'.cache'; |
| 144 | $this->_fileHandle = fopen($this->_fileName,'a+'); | 144 | $this->_fileHandle = fopen($this->_fileName,'a+'); |
| 145 | } | 145 | } |
| 146 | } // function __construct() | 146 | } // function __construct() |
| 147 | 147 | ||
| 148 | 148 | ||
| 149 | public function __destruct() { | 149 | public function __destruct() { |
| 150 | if (!is_null($this->_fileHandle)) { | 150 | if (!is_null($this->_fileHandle)) { |
| 151 | fclose($this->_fileHandle); | 151 | fclose($this->_fileHandle); |
| 152 | unlink($this->_fileName); | 152 | unlink($this->_fileName); |
| 153 | } | 153 | } |
| 154 | $this->_fileHandle = null; | 154 | $this->_fileHandle = null; |
| 155 | } // function __destruct() | 155 | } // function __destruct() |
| 156 | 156 | ||
| 157 | } | 157 | } | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | * PHPExcel | 3 | * PHPExcel |
| 4 | * | 4 | * |
| 5 | * Copyright (c) 2006 - 2011 PHPExcel | 5 | * Copyright (c) 2006 - 2011 PHPExcel |
| 6 | * | 6 | * |
| 7 | * This library is free software; you can redistribute it and/or | 7 | * This library is free software; you can redistribute it and/or |
| 8 | * modify it under the terms of the GNU Lesser General Public | 8 | * modify it under the terms of the GNU Lesser General Public |
| 9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
| 10 | * version 2.1 of the License, or (at your option) any later version. | 10 | * version 2.1 of the License, or (at your option) any later version. |
| 11 | * | 11 | * |
| 12 | * This library is distributed in the hope that it will be useful, | 12 | * This library is distributed in the hope that it will be useful, |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | * Lesser General Public License for more details. | 15 | * Lesser General Public License for more details. |
| 16 | * | 16 | * |
| 17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
| 18 | * License along with this library; if not, write to the Free Software | 18 | * License along with this library; if not, write to the Free Software |
| 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 20 | * | 20 | * |
| 21 | * @category PHPExcel | 21 | * @category PHPExcel |
| 22 | * @package PHPExcel_CachedObjectStorage | 22 | * @package PHPExcel_CachedObjectStorage |
| 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL | 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL |
| 25 | * @version 1.7.6, 2011-02-27 | 25 | * @version 1.7.6, 2011-02-27 |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * PHPExcel_CachedObjectStorage_Memcache | 30 | * PHPExcel_CachedObjectStorage_Memcache |
| 31 | * | 31 | * |
| 32 | * @category PHPExcel | 32 | * @category PHPExcel |
| 33 | * @package PHPExcel_CachedObjectStorage | 33 | * @package PHPExcel_CachedObjectStorage |
| 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 35 | */ | 35 | */ |
| 36 | class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { | 36 | class PHPExcel_CachedObjectStorage_Memcache extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { |
| 37 | 37 | ||
| 38 | private $_cachePrefix = null; | 38 | private $_cachePrefix = null; |
| 39 | 39 | ||
| 40 | private $_cacheTime = 600; | 40 | private $_cacheTime = 600; |
| 41 | 41 | ||
| 42 | private $_memcache = null; | 42 | private $_memcache = null; |
| 43 | 43 | ||
| 44 | 44 | ||
| 45 | private function _storeData() { | 45 | private function _storeData() { |
| 46 | $this->_currentObject->detach(); | 46 | $this->_currentObject->detach(); |
| 47 | 47 | ||
| 48 | $obj = serialize($this->_currentObject); | 48 | $obj = serialize($this->_currentObject); |
| 49 | if (!$this->_memcache->replace($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) { | 49 | if (!$this->_memcache->replace($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) { |
| 50 | if (!$this->_memcache->add($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) { | 50 | if (!$this->_memcache->add($this->_cachePrefix.$this->_currentObjectID.'.cache',$obj,NULL,$this->_cacheTime)) { |
| 51 | $this->__destruct(); | 51 | $this->__destruct(); |
| 52 | throw new Exception('Failed to store cell '.$cellID.' in MemCache'); | 52 | throw new Exception('Failed to store cell '.$cellID.' in MemCache'); |
| 53 | } | 53 | } |
| 54 | } | 54 | } |
| 55 | $this->_currentObjectID = $this->_currentObject = null; | 55 | $this->_currentObjectID = $this->_currentObject = null; |
| 56 | } // function _storeData() | 56 | } // function _storeData() |
| 57 | 57 | ||
| 58 | 58 | ||
| 59 | /** | 59 | /** |
| 60 | * Add or Update a cell in cache identified by coordinate address | 60 | * Add or Update a cell in cache identified by coordinate address |
| 61 | * | 61 | * |
| 62 | * @param string $pCoord Coordinate address of the cell to update | 62 | * @param string $pCoord Coordinate address of the cell to update |
| 63 | * @param PHPExcel_Cell $cell Cell to update | 63 | * @param PHPExcel_Cell $cell Cell to update |
| 64 | * @return void | 64 | * @return void |
| 65 | * @throws Exception | 65 | * @throws Exception |
| 66 | */ | 66 | */ |
| 67 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { | 67 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { |
| 68 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { | 68 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { |
| 69 | $this->_storeData(); | 69 | $this->_storeData(); |
| 70 | } | 70 | } |
| 71 | $this->_cellCache[$pCoord] = true; | 71 | $this->_cellCache[$pCoord] = true; |
| 72 | 72 | ||
| 73 | $this->_currentObjectID = $pCoord; | 73 | $this->_currentObjectID = $pCoord; |
| 74 | $this->_currentObject = $cell; | 74 | $this->_currentObject = $cell; |
| 75 | 75 | ||
| 76 | return $cell; | 76 | return $cell; |
| 77 | } // function addCacheData() | 77 | } // function addCacheData() |
| 78 | 78 | ||
| 79 | 79 | ||
| 80 | /** | 80 | /** |
| 81 | * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? | 81 | * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? |
| 82 | * | 82 | * |
| 83 | * @param string $pCoord Coordinate address of the cell to check | 83 | * @param string $pCoord Coordinate address of the cell to check |
| 84 | * @return void | 84 | * @return void |
| 85 | * @return boolean | 85 | * @return boolean |
| 86 | */ | 86 | */ |
| 87 | public function isDataSet($pCoord) { | 87 | public function isDataSet($pCoord) { |
| 88 | // Check if the requested entry is the current object, or exists in the cache | 88 | // Check if the requested entry is the current object, or exists in the cache |
| 89 | if (parent::isDataSet($pCoord)) { | 89 | if (parent::isDataSet($pCoord)) { |
| 90 | if ($this->_currentObjectID == $pCoord) { | 90 | if ($this->_currentObjectID == $pCoord) { |
| 91 | return true; | 91 | return true; |
| 92 | } | 92 | } |
| 93 | // Check if the requested entry still exists in Memcache | 93 | // Check if the requested entry still exists in Memcache |
| 94 | $success = $this->_memcache->get($this->_cachePrefix.$pCoord.'.cache'); | 94 | $success = $this->_memcache->get($this->_cachePrefix.$pCoord.'.cache'); |
| 95 | if ($success === false) { | 95 | if ($success === false) { |
| 96 | // Entry no longer exists in Memcache, so clear it from the cache array | 96 | // Entry no longer exists in Memcache, so clear it from the cache array |
| 97 | parent::deleteCacheData($pCoord); | 97 | parent::deleteCacheData($pCoord); |
| 98 | throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache'); | 98 | throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache'); |
| 99 | } | 99 | } |
| 100 | return true; | 100 | return true; |
| 101 | } | 101 | } |
| 102 | return false; | 102 | return false; |
| 103 | } // function isDataSet() | 103 | } // function isDataSet() |
| 104 | 104 | ||
| 105 | 105 | ||
| 106 | /** | 106 | /** |
| 107 | * Get cell at a specific coordinate | 107 | * Get cell at a specific coordinate |
| 108 | * | 108 | * |
| 109 | * @param string $pCoord Coordinate of the cell | 109 | * @param string $pCoord Coordinate of the cell |
| 110 | * @throws Exception | 110 | * @throws Exception |
| 111 | * @return PHPExcel_Cell Cell that was found, or null if not found | 111 | * @return PHPExcel_Cell Cell that was found, or null if not found |
| 112 | */ | 112 | */ |
| 113 | public function getCacheData($pCoord) { | 113 | public function getCacheData($pCoord) { |
| 114 | if ($pCoord === $this->_currentObjectID) { | 114 | if ($pCoord === $this->_currentObjectID) { |
| 115 | return $this->_currentObject; | 115 | return $this->_currentObject; |
| 116 | } | 116 | } |
| 117 | $this->_storeData(); | 117 | $this->_storeData(); |
| 118 | 118 | ||
| 119 | // Check if the entry that has been requested actually exists | 119 | // Check if the entry that has been requested actually exists |
| 120 | if (parent::isDataSet($pCoord)) { | 120 | if (parent::isDataSet($pCoord)) { |
| 121 | $obj = $this->_memcache->get($this->_cachePrefix.$pCoord.'.cache'); | 121 | $obj = $this->_memcache->get($this->_cachePrefix.$pCoord.'.cache'); |
| 122 | if ($obj === false) { | 122 | if ($obj === false) { |
| 123 | // Entry no longer exists in Memcache, so clear it from the cache array | 123 | // Entry no longer exists in Memcache, so clear it from the cache array |
| 124 | parent::deleteCacheData($pCoord); | 124 | parent::deleteCacheData($pCoord); |
| 125 | throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache'); | 125 | throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache'); |
| 126 | } | 126 | } |
| 127 | } else { | 127 | } else { |
| 128 | // Return null if requested entry doesn't exist in cache | 128 | // Return null if requested entry doesn't exist in cache |
| 129 | return null; | 129 | return null; |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | // Set current entry to the requested entry | 132 | // Set current entry to the requested entry |
| 133 | $this->_currentObjectID = $pCoord; | 133 | $this->_currentObjectID = $pCoord; |
| 134 | $this->_currentObject = unserialize($obj); | 134 | $this->_currentObject = unserialize($obj); |
| 135 | // Re-attach the parent worksheet | 135 | // Re-attach the parent worksheet |
| 136 | $this->_currentObject->attach($this->_parent); | 136 | $this->_currentObject->attach($this->_parent); |
| 137 | 137 | ||
| 138 | // Return requested entry | 138 | // Return requested entry |
| 139 | return $this->_currentObject; | 139 | return $this->_currentObject; |
| 140 | } // function getCacheData() | 140 | } // function getCacheData() |
| 141 | 141 | ||
| 142 | 142 | ||
| 143 | /** | 143 | /** |
| 144 | * Delete a cell in cache identified by coordinate address | 144 | * Delete a cell in cache identified by coordinate address |
| 145 | * | 145 | * |
| 146 | * @param string $pCoord Coordinate address of the cell to delete | 146 | * @param string $pCoord Coordinate address of the cell to delete |
| 147 | * @throws Exception | 147 | * @throws Exception |
| 148 | */ | 148 | */ |
| 149 | public function deleteCacheData($pCoord) { | 149 | public function deleteCacheData($pCoord) { |
| 150 | // Delete the entry from Memcache | 150 | // Delete the entry from Memcache |
| 151 | $this->_memcache->delete($this->_cachePrefix.$pCoord.'.cache'); | 151 | $this->_memcache->delete($this->_cachePrefix.$pCoord.'.cache'); |
| 152 | 152 | ||
| 153 | // Delete the entry from our cell address array | 153 | // Delete the entry from our cell address array |
| 154 | parent::deleteCacheData($pCoord); | 154 | parent::deleteCacheData($pCoord); |
| 155 | } // function deleteCacheData() | 155 | } // function deleteCacheData() |
| 156 | 156 | ||
| 157 | 157 | ||
| 158 | /** | 158 | /** |
| 159 | * Clone the cell collection | 159 | * Clone the cell collection |
| 160 | * | 160 | * |
| 161 | * @return void | 161 | * @return void |
| 162 | */ | 162 | */ |
| 163 | public function copyCellCollection(PHPExcel_Worksheet $parent) { | 163 | public function copyCellCollection(PHPExcel_Worksheet $parent) { |
| 164 | parent::copyCellCollection($parent); | 164 | parent::copyCellCollection($parent); |
| 165 | // Get a new id for the new file name | 165 | // Get a new id for the new file name |
| 166 | $baseUnique = $this->_getUniqueID(); | 166 | $baseUnique = $this->_getUniqueID(); |
| 167 | $newCachePrefix = substr(md5($baseUnique),0,8).'.'; | 167 | $newCachePrefix = substr(md5($baseUnique),0,8).'.'; |
| 168 | $cacheList = $this->getCellList(); | 168 | $cacheList = $this->getCellList(); |
| 169 | foreach($cacheList as $cellID) { | 169 | foreach($cacheList as $cellID) { |
| 170 | if ($cellID != $this->_currentObjectID) { | 170 | if ($cellID != $this->_currentObjectID) { |
| 171 | $obj = $this->_memcache->get($this->_cachePrefix.$cellID.'.cache'); | 171 | $obj = $this->_memcache->get($this->_cachePrefix.$cellID.'.cache'); |
| 172 | if ($obj === false) { | 172 | if ($obj === false) { |
| 173 | // Entry no longer exists in Memcache, so clear it from the cache array | 173 | // Entry no longer exists in Memcache, so clear it from the cache array |
| 174 | parent::deleteCacheData($cellID); | 174 | parent::deleteCacheData($cellID); |
| 175 | throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache'); | 175 | throw new Exception('Cell entry '.$cellID.' no longer exists in MemCache'); |
| 176 | } | 176 | } |
| 177 | if (!$this->_memcache->add($newCachePrefix.$cellID.'.cache',$obj,NULL,$this->_cacheTime)) { | 177 | if (!$this->_memcache->add($newCachePrefix.$cellID.'.cache',$obj,NULL,$this->_cacheTime)) { |
| 178 | $this->__destruct(); | 178 | $this->__destruct(); |
| 179 | throw new Exception('Failed to store cell '.$cellID.' in MemCache'); | 179 | throw new Exception('Failed to store cell '.$cellID.' in MemCache'); |
| 180 | } | 180 | } |
| 181 | } | 181 | } |
| 182 | } | 182 | } |
| 183 | $this->_cachePrefix = $newCachePrefix; | 183 | $this->_cachePrefix = $newCachePrefix; |
| 184 | } // function copyCellCollection() | 184 | } // function copyCellCollection() |
| 185 | 185 | ||
| 186 | 186 | ||
| 187 | public function unsetWorksheetCells() { | 187 | public function unsetWorksheetCells() { |
| 188 | if(!is_null($this->_currentObject)) { | 188 | if(!is_null($this->_currentObject)) { |
| 189 | $this->_currentObject->detach(); | 189 | $this->_currentObject->detach(); |
| 190 | $this->_currentObject = $this->_currentObjectID = null; | 190 | $this->_currentObject = $this->_currentObjectID = null; |
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | // Flush the Memcache cache | 193 | // Flush the Memcache cache |
| 194 | $this->__destruct(); | 194 | $this->__destruct(); |
| 195 | 195 | ||
| 196 | $this->_cellCache = array(); | 196 | $this->_cellCache = array(); |
| 197 | 197 | ||
| 198 | // detach ourself from the worksheet, so that it can then delete this object successfully | 198 | // detach ourself from the worksheet, so that it can then delete this object successfully |
| 199 | $this->_parent = null; | 199 | $this->_parent = null; |
| 200 | } // function unsetWorksheetCells() | 200 | } // function unsetWorksheetCells() |
| 201 | 201 | ||
| 202 | 202 | ||
| 203 | public function __construct(PHPExcel_Worksheet $parent, $arguments) { | 203 | public function __construct(PHPExcel_Worksheet $parent, $arguments) { |
| 204 | $memcacheServer = (isset($arguments['memcacheServer'])) ? $arguments['memcacheServer'] : 'localhost'; | 204 | $memcacheServer = (isset($arguments['memcacheServer'])) ? $arguments['memcacheServer'] : 'localhost'; |
| 205 | $memcachePort = (isset($arguments['memcachePort'])) ? $arguments['memcachePort'] : 11211; | 205 | $memcachePort = (isset($arguments['memcachePort'])) ? $arguments['memcachePort'] : 11211; |
| 206 | $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; | 206 | $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; |
| 207 | 207 | ||
| 208 | if (is_null($this->_cachePrefix)) { | 208 | if (is_null($this->_cachePrefix)) { |
| 209 | $baseUnique = $this->_getUniqueID(); | 209 | $baseUnique = $this->_getUniqueID(); |
| 210 | $this->_cachePrefix = substr(md5($baseUnique),0,8).'.'; | 210 | $this->_cachePrefix = substr(md5($baseUnique),0,8).'.'; |
| 211 | 211 | ||
| 212 | // Set a new Memcache object and connect to the Memcache server | 212 | // Set a new Memcache object and connect to the Memcache server |
| 213 | $this->_memcache = new Memcache(); | 213 | $this->_memcache = new Memcache(); |
| 214 | if (!$this->_memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback'))) { | 214 | if (!$this->_memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback'))) { |
| 215 | throw new Exception('Could not connect to MemCache server at '.$memcacheServer.':'.$memcachePort); | 215 | throw new Exception('Could not connect to MemCache server at '.$memcacheServer.':'.$memcachePort); |
| 216 | } | 216 | } |
| 217 | $this->_cacheTime = $cacheTime; | 217 | $this->_cacheTime = $cacheTime; |
| 218 | 218 | ||
| 219 | parent::__construct($parent); | 219 | parent::__construct($parent); |
| 220 | } | 220 | } |
| 221 | } // function __construct() | 221 | } // function __construct() |
| 222 | 222 | ||
| 223 | 223 | ||
| 224 | public function failureCallback($host, $port) { | 224 | public function failureCallback($host, $port) { |
| 225 | throw new Exception('memcache '.$host.':'.$port.' failed'); | 225 | throw new Exception('memcache '.$host.':'.$port.' failed'); |
| 226 | } | 226 | } |
| 227 | 227 | ||
| 228 | 228 | ||
| 229 | public function __destruct() { | 229 | public function __destruct() { |
| 230 | $cacheList = $this->getCellList(); | 230 | $cacheList = $this->getCellList(); |
| 231 | foreach($cacheList as $cellID) { | 231 | foreach($cacheList as $cellID) { |
| 232 | $this->_memcache->delete($this->_cachePrefix.$cellID.'.cache'); | 232 | $this->_memcache->delete($this->_cachePrefix.$cellID.'.cache'); |
| 233 | } | 233 | } |
| 234 | } // function __destruct() | 234 | } // function __destruct() |
| 235 | 235 | ||
| 236 | } | 236 | } | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | * PHPExcel | 3 | * PHPExcel |
| 4 | * | 4 | * |
| 5 | * Copyright (c) 2006 - 2011 PHPExcel | 5 | * Copyright (c) 2006 - 2011 PHPExcel |
| 6 | * | 6 | * |
| 7 | * This library is free software; you can redistribute it and/or | 7 | * This library is free software; you can redistribute it and/or |
| 8 | * modify it under the terms of the GNU Lesser General Public | 8 | * modify it under the terms of the GNU Lesser General Public |
| 9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
| 10 | * version 2.1 of the License, or (at your option) any later version. | 10 | * version 2.1 of the License, or (at your option) any later version. |
| 11 | * | 11 | * |
| 12 | * This library is distributed in the hope that it will be useful, | 12 | * This library is distributed in the hope that it will be useful, |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | * Lesser General Public License for more details. | 15 | * Lesser General Public License for more details. |
| 16 | * | 16 | * |
| 17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
| 18 | * License along with this library; if not, write to the Free Software | 18 | * License along with this library; if not, write to the Free Software |
| 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 20 | * | 20 | * |
| 21 | * @category PHPExcel | 21 | * @category PHPExcel |
| 22 | * @package PHPExcel_CachedObjectStorage | 22 | * @package PHPExcel_CachedObjectStorage |
| 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL | 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL |
| 25 | * @version 1.7.6, 2011-02-27 | 25 | * @version 1.7.6, 2011-02-27 |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * PHPExcel_CachedObjectStorage_MemoryGZip | 30 | * PHPExcel_CachedObjectStorage_MemoryGZip |
| 31 | * | 31 | * |
| 32 | * @category PHPExcel | 32 | * @category PHPExcel |
| 33 | * @package PHPExcel_CachedObjectStorage | 33 | * @package PHPExcel_CachedObjectStorage |
| 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 35 | */ | 35 | */ |
| 36 | class PHPExcel_CachedObjectStorage_MemoryGZip extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { | 36 | class PHPExcel_CachedObjectStorage_MemoryGZip extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { |
| 37 | 37 | ||
| 38 | private function _storeData() { | 38 | private function _storeData() { |
| 39 | $this->_currentObject->detach(); | 39 | $this->_currentObject->detach(); |
| 40 | 40 | ||
| 41 | $this->_cellCache[$this->_currentObjectID] = gzdeflate(serialize($this->_currentObject)); | 41 | $this->_cellCache[$this->_currentObjectID] = gzdeflate(serialize($this->_currentObject)); |
| 42 | $this->_currentObjectID = $this->_currentObject = null; | 42 | $this->_currentObjectID = $this->_currentObject = null; |
| 43 | } // function _storeData() | 43 | } // function _storeData() |
| 44 | 44 | ||
| 45 | 45 | ||
| 46 | /** | 46 | /** |
| 47 | * Add or Update a cell in cache identified by coordinate address | 47 | * Add or Update a cell in cache identified by coordinate address |
| 48 | * | 48 | * |
| 49 | * @param string $pCoord Coordinate address of the cell to update | 49 | * @param string $pCoord Coordinate address of the cell to update |
| 50 | * @param PHPExcel_Cell $cell Cell to update | 50 | * @param PHPExcel_Cell $cell Cell to update |
| 51 | * @return void | 51 | * @return void |
| 52 | * @throws Exception | 52 | * @throws Exception |
| 53 | */ | 53 | */ |
| 54 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { | 54 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { |
| 55 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { | 55 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { |
| 56 | $this->_storeData(); | 56 | $this->_storeData(); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | $this->_currentObjectID = $pCoord; | 59 | $this->_currentObjectID = $pCoord; |
| 60 | $this->_currentObject = $cell; | 60 | $this->_currentObject = $cell; |
| 61 | 61 | ||
| 62 | return $cell; | 62 | return $cell; |
| 63 | } // function addCacheData() | 63 | } // function addCacheData() |
| 64 | 64 | ||
| 65 | 65 | ||
| 66 | /** | 66 | /** |
| 67 | * Get cell at a specific coordinate | 67 | * Get cell at a specific coordinate |
| 68 | * | 68 | * |
| 69 | * @param string $pCoord Coordinate of the cell | 69 | * @param string $pCoord Coordinate of the cell |
| 70 | * @throws Exception | 70 | * @throws Exception |
| 71 | * @return PHPExcel_Cell Cell that was found, or null if not found | 71 | * @return PHPExcel_Cell Cell that was found, or null if not found |
| 72 | */ | 72 | */ |
| 73 | public function getCacheData($pCoord) { | 73 | public function getCacheData($pCoord) { |
| 74 | if ($pCoord === $this->_currentObjectID) { | 74 | if ($pCoord === $this->_currentObjectID) { |
| 75 | return $this->_currentObject; | 75 | return $this->_currentObject; |
| 76 | } | 76 | } |
| 77 | $this->_storeData(); | 77 | $this->_storeData(); |
| 78 | 78 | ||
| 79 | // Check if the entry that has been requested actually exists | 79 | // Check if the entry that has been requested actually exists |
| 80 | if (!isset($this->_cellCache[$pCoord])) { | 80 | if (!isset($this->_cellCache[$pCoord])) { |
| 81 | // Return null if requested entry doesn't exist in cache | 81 | // Return null if requested entry doesn't exist in cache |
| 82 | return null; | 82 | return null; |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | // Set current entry to the requested entry | 85 | // Set current entry to the requested entry |
| 86 | $this->_currentObjectID = $pCoord; | 86 | $this->_currentObjectID = $pCoord; |
| 87 | $this->_currentObject = unserialize(gzinflate($this->_cellCache[$pCoord])); | 87 | $this->_currentObject = unserialize(gzinflate($this->_cellCache[$pCoord])); |
| 88 | // Re-attach the parent worksheet | 88 | // Re-attach the parent worksheet |
| 89 | $this->_currentObject->attach($this->_parent); | 89 | $this->_currentObject->attach($this->_parent); |
| 90 | 90 | ||
| 91 | // Return requested entry | 91 | // Return requested entry |
| 92 | return $this->_currentObject; | 92 | return $this->_currentObject; |
| 93 | } // function getCacheData() | 93 | } // function getCacheData() |
| 94 | 94 | ||
| 95 | 95 | ||
| 96 | public function unsetWorksheetCells() { | 96 | public function unsetWorksheetCells() { |
| 97 | if(!is_null($this->_currentObject)) { | 97 | if(!is_null($this->_currentObject)) { |
| 98 | $this->_currentObject->detach(); | 98 | $this->_currentObject->detach(); |
| 99 | $this->_currentObject = $this->_currentObjectID = null; | 99 | $this->_currentObject = $this->_currentObjectID = null; |
| 100 | } | 100 | } |
| 101 | $this->_cellCache = array(); | 101 | $this->_cellCache = array(); |
| 102 | 102 | ||
| 103 | // detach ourself from the worksheet, so that it can then delete this object successfully | 103 | // detach ourself from the worksheet, so that it can then delete this object successfully |
| 104 | $this->_parent = null; | 104 | $this->_parent = null; |
| 105 | } // function unsetWorksheetCells() | 105 | } // function unsetWorksheetCells() |
| 106 | 106 | ||
| 107 | } | 107 | } | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | * PHPExcel | 3 | * PHPExcel |
| 4 | * | 4 | * |
| 5 | * Copyright (c) 2006 - 2011 PHPExcel | 5 | * Copyright (c) 2006 - 2011 PHPExcel |
| 6 | * | 6 | * |
| 7 | * This library is free software; you can redistribute it and/or | 7 | * This library is free software; you can redistribute it and/or |
| 8 | * modify it under the terms of the GNU Lesser General Public | 8 | * modify it under the terms of the GNU Lesser General Public |
| 9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
| 10 | * version 2.1 of the License, or (at your option) any later version. | 10 | * version 2.1 of the License, or (at your option) any later version. |
| 11 | * | 11 | * |
| 12 | * This library is distributed in the hope that it will be useful, | 12 | * This library is distributed in the hope that it will be useful, |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | * Lesser General Public License for more details. | 15 | * Lesser General Public License for more details. |
| 16 | * | 16 | * |
| 17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
| 18 | * License along with this library; if not, write to the Free Software | 18 | * License along with this library; if not, write to the Free Software |
| 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 20 | * | 20 | * |
| 21 | * @category PHPExcel | 21 | * @category PHPExcel |
| 22 | * @package PHPExcel_CachedObjectStorage | 22 | * @package PHPExcel_CachedObjectStorage |
| 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL | 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL |
| 25 | * @version 1.7.6, 2011-02-27 | 25 | * @version 1.7.6, 2011-02-27 |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * PHPExcel_CachedObjectStorage_MemorySerialized | 30 | * PHPExcel_CachedObjectStorage_MemorySerialized |
| 31 | * | 31 | * |
| 32 | * @category PHPExcel | 32 | * @category PHPExcel |
| 33 | * @package PHPExcel_CachedObjectStorage | 33 | * @package PHPExcel_CachedObjectStorage |
| 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 35 | */ | 35 | */ |
| 36 | class PHPExcel_CachedObjectStorage_MemorySerialized extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { | 36 | class PHPExcel_CachedObjectStorage_MemorySerialized extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { |
| 37 | 37 | ||
| 38 | private function _storeData() { | 38 | private function _storeData() { |
| 39 | $this->_currentObject->detach(); | 39 | $this->_currentObject->detach(); |
| 40 | 40 | ||
| 41 | $this->_cellCache[$this->_currentObjectID] = serialize($this->_currentObject); | 41 | $this->_cellCache[$this->_currentObjectID] = serialize($this->_currentObject); |
| 42 | $this->_currentObjectID = $this->_currentObject = null; | 42 | $this->_currentObjectID = $this->_currentObject = null; |
| 43 | } // function _storeData() | 43 | } // function _storeData() |
| 44 | 44 | ||
| 45 | 45 | ||
| 46 | /** | 46 | /** |
| 47 | * Add or Update a cell in cache identified by coordinate address | 47 | * Add or Update a cell in cache identified by coordinate address |
| 48 | * | 48 | * |
| 49 | * @param string $pCoord Coordinate address of the cell to update | 49 | * @param string $pCoord Coordinate address of the cell to update |
| 50 | * @param PHPExcel_Cell $cell Cell to update | 50 | * @param PHPExcel_Cell $cell Cell to update |
| 51 | * @return void | 51 | * @return void |
| 52 | * @throws Exception | 52 | * @throws Exception |
| 53 | */ | 53 | */ |
| 54 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { | 54 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { |
| 55 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { | 55 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { |
| 56 | $this->_storeData(); | 56 | $this->_storeData(); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | $this->_currentObjectID = $pCoord; | 59 | $this->_currentObjectID = $pCoord; |
| 60 | $this->_currentObject = $cell; | 60 | $this->_currentObject = $cell; |
| 61 | 61 | ||
| 62 | return $cell; | 62 | return $cell; |
| 63 | } // function addCacheData() | 63 | } // function addCacheData() |
| 64 | 64 | ||
| 65 | 65 | ||
| 66 | /** | 66 | /** |
| 67 | * Get cell at a specific coordinate | 67 | * Get cell at a specific coordinate |
| 68 | * | 68 | * |
| 69 | * @param string $pCoord Coordinate of the cell | 69 | * @param string $pCoord Coordinate of the cell |
| 70 | * @throws Exception | 70 | * @throws Exception |
| 71 | * @return PHPExcel_Cell Cell that was found, or null if not found | 71 | * @return PHPExcel_Cell Cell that was found, or null if not found |
| 72 | */ | 72 | */ |
| 73 | public function getCacheData($pCoord) { | 73 | public function getCacheData($pCoord) { |
| 74 | if ($pCoord === $this->_currentObjectID) { | 74 | if ($pCoord === $this->_currentObjectID) { |
| 75 | return $this->_currentObject; | 75 | return $this->_currentObject; |
| 76 | } | 76 | } |
| 77 | $this->_storeData(); | 77 | $this->_storeData(); |
| 78 | 78 | ||
| 79 | // Check if the entry that has been requested actually exists | 79 | // Check if the entry that has been requested actually exists |
| 80 | if (!isset($this->_cellCache[$pCoord])) { | 80 | if (!isset($this->_cellCache[$pCoord])) { |
| 81 | // Return null if requested entry doesn't exist in cache | 81 | // Return null if requested entry doesn't exist in cache |
| 82 | return null; | 82 | return null; |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | // Set current entry to the requested entry | 85 | // Set current entry to the requested entry |
| 86 | $this->_currentObjectID = $pCoord; | 86 | $this->_currentObjectID = $pCoord; |
| 87 | $this->_currentObject = unserialize($this->_cellCache[$pCoord]); | 87 | $this->_currentObject = unserialize($this->_cellCache[$pCoord]); |
| 88 | // Re-attach the parent worksheet | 88 | // Re-attach the parent worksheet |
| 89 | $this->_currentObject->attach($this->_parent); | 89 | $this->_currentObject->attach($this->_parent); |
| 90 | 90 | ||
| 91 | // Return requested entry | 91 | // Return requested entry |
| 92 | return $this->_currentObject; | 92 | return $this->_currentObject; |
| 93 | } // function getCacheData() | 93 | } // function getCacheData() |
| 94 | 94 | ||
| 95 | 95 | ||
| 96 | public function unsetWorksheetCells() { | 96 | public function unsetWorksheetCells() { |
| 97 | if(!is_null($this->_currentObject)) { | 97 | if(!is_null($this->_currentObject)) { |
| 98 | $this->_currentObject->detach(); | 98 | $this->_currentObject->detach(); |
| 99 | $this->_currentObject = $this->_currentObjectID = null; | 99 | $this->_currentObject = $this->_currentObjectID = null; |
| 100 | } | 100 | } |
| 101 | $this->_cellCache = array(); | 101 | $this->_cellCache = array(); |
| 102 | 102 | ||
| 103 | // detach ourself from the worksheet, so that it can then delete this object successfully | 103 | // detach ourself from the worksheet, so that it can then delete this object successfully |
| 104 | $this->_parent = null; | 104 | $this->_parent = null; |
| 105 | } // function unsetWorksheetCells() | 105 | } // function unsetWorksheetCells() |
| 106 | 106 | ||
| 107 | } | 107 | } | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | * PHPExcel | 3 | * PHPExcel |
| 4 | * | 4 | * |
| 5 | * Copyright (c) 2006 - 2011 PHPExcel | 5 | * Copyright (c) 2006 - 2011 PHPExcel |
| 6 | * | 6 | * |
| 7 | * This library is free software; you can redistribute it and/or | 7 | * This library is free software; you can redistribute it and/or |
| 8 | * modify it under the terms of the GNU Lesser General Public | 8 | * modify it under the terms of the GNU Lesser General Public |
| 9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
| 10 | * version 2.1 of the License, or (at your option) any later version. | 10 | * version 2.1 of the License, or (at your option) any later version. |
| 11 | * | 11 | * |
| 12 | * This library is distributed in the hope that it will be useful, | 12 | * This library is distributed in the hope that it will be useful, |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | * Lesser General Public License for more details. | 15 | * Lesser General Public License for more details. |
| 16 | * | 16 | * |
| 17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
| 18 | * License along with this library; if not, write to the Free Software | 18 | * License along with this library; if not, write to the Free Software |
| 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 20 | * | 20 | * |
| 21 | * @category PHPExcel | 21 | * @category PHPExcel |
| 22 | * @package PHPExcel_CachedObjectStorage | 22 | * @package PHPExcel_CachedObjectStorage |
| 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL | 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL |
| 25 | * @version 1.7.6, 2011-02-27 | 25 | * @version 1.7.6, 2011-02-27 |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * PHPExcel_CachedObjectStorage_PHPTemp | 30 | * PHPExcel_CachedObjectStorage_PHPTemp |
| 31 | * | 31 | * |
| 32 | * @category PHPExcel | 32 | * @category PHPExcel |
| 33 | * @package PHPExcel_CachedObjectStorage | 33 | * @package PHPExcel_CachedObjectStorage |
| 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 35 | */ | 35 | */ |
| 36 | class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { | 36 | class PHPExcel_CachedObjectStorage_PHPTemp extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { |
| 37 | 37 | ||
| 38 | private $_fileHandle = null; | 38 | private $_fileHandle = null; |
| 39 | 39 | ||
| 40 | 40 | ||
| 41 | private $_memoryCacheSize = null; | 41 | private $_memoryCacheSize = null; |
| 42 | 42 | ||
| 43 | private function _storeData() { | 43 | private function _storeData() { |
| 44 | $this->_currentObject->detach(); | 44 | $this->_currentObject->detach(); |
| 45 | 45 | ||
| 46 | fseek($this->_fileHandle,0,SEEK_END); | 46 | fseek($this->_fileHandle,0,SEEK_END); |
| 47 | $offset = ftell($this->_fileHandle); | 47 | $offset = ftell($this->_fileHandle); |
| 48 | fwrite($this->_fileHandle, serialize($this->_currentObject)); | 48 | fwrite($this->_fileHandle, serialize($this->_currentObject)); |
| 49 | $this->_cellCache[$this->_currentObjectID] = array('ptr' => $offset, | 49 | $this->_cellCache[$this->_currentObjectID] = array('ptr' => $offset, |
| 50 | 'sz' => ftell($this->_fileHandle) - $offset | 50 | 'sz' => ftell($this->_fileHandle) - $offset |
| 51 | ); | 51 | ); |
| 52 | $this->_currentObjectID = $this->_currentObject = null; | 52 | $this->_currentObjectID = $this->_currentObject = null; |
| 53 | } // function _storeData() | 53 | } // function _storeData() |
| 54 | 54 | ||
| 55 | 55 | ||
| 56 | /** | 56 | /** |
| 57 | * Add or Update a cell in cache identified by coordinate address | 57 | * Add or Update a cell in cache identified by coordinate address |
| 58 | * | 58 | * |
| 59 | * @param string $pCoord Coordinate address of the cell to update | 59 | * @param string $pCoord Coordinate address of the cell to update |
| 60 | * @param PHPExcel_Cell $cell Cell to update | 60 | * @param PHPExcel_Cell $cell Cell to update |
| 61 | * @return void | 61 | * @return void |
| 62 | * @throws Exception | 62 | * @throws Exception |
| 63 | */ | 63 | */ |
| 64 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { | 64 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { |
| 65 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { | 65 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { |
| 66 | $this->_storeData(); | 66 | $this->_storeData(); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | $this->_currentObjectID = $pCoord; | 69 | $this->_currentObjectID = $pCoord; |
| 70 | $this->_currentObject = $cell; | 70 | $this->_currentObject = $cell; |
| 71 | 71 | ||
| 72 | return $cell; | 72 | return $cell; |
| 73 | } // function addCacheData() | 73 | } // function addCacheData() |
| 74 | 74 | ||
| 75 | 75 | ||
| 76 | /** | 76 | /** |
| 77 | * Get cell at a specific coordinate | 77 | * Get cell at a specific coordinate |
| 78 | * | 78 | * |
| 79 | * @param string $pCoord Coordinate of the cell | 79 | * @param string $pCoord Coordinate of the cell |
| 80 | * @throws Exception | 80 | * @throws Exception |
| 81 | * @return PHPExcel_Cell Cell that was found, or null if not found | 81 | * @return PHPExcel_Cell Cell that was found, or null if not found |
| 82 | */ | 82 | */ |
| 83 | public function getCacheData($pCoord) { | 83 | public function getCacheData($pCoord) { |
| 84 | if ($pCoord === $this->_currentObjectID) { | 84 | if ($pCoord === $this->_currentObjectID) { |
| 85 | return $this->_currentObject; | 85 | return $this->_currentObject; |
| 86 | } | 86 | } |
| 87 | $this->_storeData(); | 87 | $this->_storeData(); |
| 88 | 88 | ||
| 89 | // Check if the entry that has been requested actually exists | 89 | // Check if the entry that has been requested actually exists |
| 90 | if (!isset($this->_cellCache[$pCoord])) { | 90 | if (!isset($this->_cellCache[$pCoord])) { |
| 91 | // Return null if requested entry doesn't exist in cache | 91 | // Return null if requested entry doesn't exist in cache |
| 92 | return null; | 92 | return null; |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | // Set current entry to the requested entry | 95 | // Set current entry to the requested entry |
| 96 | $this->_currentObjectID = $pCoord; | 96 | $this->_currentObjectID = $pCoord; |
| 97 | fseek($this->_fileHandle,$this->_cellCache[$pCoord]['ptr']); | 97 | fseek($this->_fileHandle,$this->_cellCache[$pCoord]['ptr']); |
| 98 | $this->_currentObject = unserialize(fread($this->_fileHandle,$this->_cellCache[$pCoord]['sz'])); | 98 | $this->_currentObject = unserialize(fread($this->_fileHandle,$this->_cellCache[$pCoord]['sz'])); |
| 99 | // Re-attach the parent worksheet | 99 | // Re-attach the parent worksheet |
| 100 | $this->_currentObject->attach($this->_parent); | 100 | $this->_currentObject->attach($this->_parent); |
| 101 | 101 | ||
| 102 | // Return requested entry | 102 | // Return requested entry |
| 103 | return $this->_currentObject; | 103 | return $this->_currentObject; |
| 104 | } // function getCacheData() | 104 | } // function getCacheData() |
| 105 | 105 | ||
| 106 | 106 | ||
| 107 | /** | 107 | /** |
| 108 | * Clone the cell collection | 108 | * Clone the cell collection |
| 109 | * | 109 | * |
| 110 | * @return void | 110 | * @return void |
| 111 | */ | 111 | */ |
| 112 | public function copyCellCollection(PHPExcel_Worksheet $parent) { | 112 | public function copyCellCollection(PHPExcel_Worksheet $parent) { |
| 113 | parent::copyCellCollection($parent); | 113 | parent::copyCellCollection($parent); |
| 114 | // Open a new stream for the cell cache data | 114 | // Open a new stream for the cell cache data |
| 115 | $newFileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+'); | 115 | $newFileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+'); |
| 116 | // Copy the existing cell cache data to the new stream | 116 | // Copy the existing cell cache data to the new stream |
| 117 | fseek($this->_fileHandle,0); | 117 | fseek($this->_fileHandle,0); |
| 118 | while (!feof($this->_fileHandle)) { | 118 | while (!feof($this->_fileHandle)) { |
| 119 | fwrite($newFileHandle,fread($this->_fileHandle, 1024)); | 119 | fwrite($newFileHandle,fread($this->_fileHandle, 1024)); |
| 120 | } | 120 | } |
| 121 | $this->_fileHandle = $newFileHandle; | 121 | $this->_fileHandle = $newFileHandle; |
| 122 | } // function copyCellCollection() | 122 | } // function copyCellCollection() |
| 123 | 123 | ||
| 124 | 124 | ||
| 125 | public function unsetWorksheetCells() { | 125 | public function unsetWorksheetCells() { |
| 126 | if(!is_null($this->_currentObject)) { | 126 | if(!is_null($this->_currentObject)) { |
| 127 | $this->_currentObject->detach(); | 127 | $this->_currentObject->detach(); |
| 128 | $this->_currentObject = $this->_currentObjectID = null; | 128 | $this->_currentObject = $this->_currentObjectID = null; |
| 129 | } | 129 | } |
| 130 | $this->_cellCache = array(); | 130 | $this->_cellCache = array(); |
| 131 | 131 | ||
| 132 | // detach ourself from the worksheet, so that it can then delete this object successfully | 132 | // detach ourself from the worksheet, so that it can then delete this object successfully |
| 133 | $this->_parent = null; | 133 | $this->_parent = null; |
| 134 | 134 | ||
| 135 | // Close down the php://temp file | 135 | // Close down the php://temp file |
| 136 | $this->__destruct(); | 136 | $this->__destruct(); |
| 137 | } // function unsetWorksheetCells() | 137 | } // function unsetWorksheetCells() |
| 138 | 138 | ||
| 139 | 139 | ||
| 140 | public function __construct(PHPExcel_Worksheet $parent, $memoryCacheSize = '1MB') { | 140 | public function __construct(PHPExcel_Worksheet $parent, $memoryCacheSize = '1MB') { |
| 141 | $this->_memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB'; | 141 | $this->_memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB'; |
| 142 | 142 | ||
| 143 | parent::__construct($parent); | 143 | parent::__construct($parent); |
| 144 | if (is_null($this->_fileHandle)) { | 144 | if (is_null($this->_fileHandle)) { |
| 145 | $this->_fileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+'); | 145 | $this->_fileHandle = fopen('php://temp/maxmemory:'.$this->_memoryCacheSize,'a+'); |
| 146 | } | 146 | } |
| 147 | } // function __construct() | 147 | } // function __construct() |
| 148 | 148 | ||
| 149 | 149 | ||
| 150 | public function __destruct() { | 150 | public function __destruct() { |
| 151 | if (!is_null($this->_fileHandle)) { | 151 | if (!is_null($this->_fileHandle)) { |
| 152 | fclose($this->_fileHandle); | 152 | fclose($this->_fileHandle); |
| 153 | } | 153 | } |
| 154 | $this->_fileHandle = null; | 154 | $this->_fileHandle = null; |
| 155 | } // function __destruct() | 155 | } // function __destruct() |
| 156 | 156 | ||
| 157 | } | 157 | } | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | * PHPExcel | 3 | * PHPExcel |
| 4 | * | 4 | * |
| 5 | * Copyright (c) 2006 - 2011 PHPExcel | 5 | * Copyright (c) 2006 - 2011 PHPExcel |
| 6 | * | 6 | * |
| 7 | * This library is free software; you can redistribute it and/or | 7 | * This library is free software; you can redistribute it and/or |
| 8 | * modify it under the terms of the GNU Lesser General Public | 8 | * modify it under the terms of the GNU Lesser General Public |
| 9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
| 10 | * version 2.1 of the License, or (at your option) any later version. | 10 | * version 2.1 of the License, or (at your option) any later version. |
| 11 | * | 11 | * |
| 12 | * This library is distributed in the hope that it will be useful, | 12 | * This library is distributed in the hope that it will be useful, |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | * Lesser General Public License for more details. | 15 | * Lesser General Public License for more details. |
| 16 | * | 16 | * |
| 17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
| 18 | * License along with this library; if not, write to the Free Software | 18 | * License along with this library; if not, write to the Free Software |
| 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 20 | * | 20 | * |
| 21 | * @category PHPExcel | 21 | * @category PHPExcel |
| 22 | * @package PHPExcel_CachedObjectStorage | 22 | * @package PHPExcel_CachedObjectStorage |
| 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 23 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL | 24 | * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL |
| 25 | * @version 1.7.6, 2011-02-27 | 25 | * @version 1.7.6, 2011-02-27 |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * PHPExcel_CachedObjectStorage_Wincache | 30 | * PHPExcel_CachedObjectStorage_Wincache |
| 31 | * | 31 | * |
| 32 | * @category PHPExcel | 32 | * @category PHPExcel |
| 33 | * @package PHPExcel_CachedObjectStorage | 33 | * @package PHPExcel_CachedObjectStorage |
| 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) | 34 | * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) |
| 35 | */ | 35 | */ |
| 36 | class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { | 36 | class PHPExcel_CachedObjectStorage_Wincache extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache { |
| 37 | 37 | ||
| 38 | private $_cachePrefix = null; | 38 | private $_cachePrefix = null; |
| 39 | 39 | ||
| 40 | private $_cacheTime = 600; | 40 | private $_cacheTime = 600; |
| 41 | 41 | ||
| 42 | 42 | ||
| 43 | private function _storeData() { | 43 | private function _storeData() { |
| 44 | $this->_currentObject->detach(); | 44 | $this->_currentObject->detach(); |
| 45 | 45 | ||
| 46 | $obj = serialize($this->_currentObject); | 46 | $obj = serialize($this->_currentObject); |
| 47 | if (wincache_ucache_exists($this->_cachePrefix.$this->_currentObjectID.'.cache')) { | 47 | if (wincache_ucache_exists($this->_cachePrefix.$this->_currentObjectID.'.cache')) { |
| 48 | if (!wincache_ucache_set($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) { | 48 | if (!wincache_ucache_set($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) { |
| 49 | $this->__destruct(); | 49 | $this->__destruct(); |
| 50 | throw new Exception('Failed to store cell '.$cellID.' in WinCache'); | 50 | throw new Exception('Failed to store cell '.$cellID.' in WinCache'); |
| 51 | } | 51 | } |
| 52 | } else { | 52 | } else { |
| 53 | if (!wincache_ucache_add($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) { | 53 | if (!wincache_ucache_add($this->_cachePrefix.$this->_currentObjectID.'.cache', $obj, $this->_cacheTime)) { |
| 54 | $this->__destruct(); | 54 | $this->__destruct(); |
| 55 | throw new Exception('Failed to store cell '.$cellID.' in WinCache'); | 55 | throw new Exception('Failed to store cell '.$cellID.' in WinCache'); |
| 56 | } | 56 | } |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | $this->_currentObjectID = $this->_currentObject = null; | 59 | $this->_currentObjectID = $this->_currentObject = null; |
| 60 | } // function _storeData() | 60 | } // function _storeData() |
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | /** | 63 | /** |
| 64 | * Add or Update a cell in cache identified by coordinate address | 64 | * Add or Update a cell in cache identified by coordinate address |
| 65 | * | 65 | * |
| 66 | * @param string $pCoord Coordinate address of the cell to update | 66 | * @param string $pCoord Coordinate address of the cell to update |
| 67 | * @param PHPExcel_Cell $cell Cell to update | 67 | * @param PHPExcel_Cell $cell Cell to update |
| 68 | * @return void | 68 | * @return void |
| 69 | * @throws Exception | 69 | * @throws Exception |
| 70 | */ | 70 | */ |
| 71 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { | 71 | public function addCacheData($pCoord, PHPExcel_Cell $cell) { |
| 72 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { | 72 | if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) { |
| 73 | $this->_storeData(); | 73 | $this->_storeData(); |
| 74 | } | 74 | } |
| 75 | $this->_cellCache[$pCoord] = true; | 75 | $this->_cellCache[$pCoord] = true; |
| 76 | 76 | ||
| 77 | $this->_currentObjectID = $pCoord; | 77 | $this->_currentObjectID = $pCoord; |
| 78 | $this->_currentObject = $cell; | 78 | $this->_currentObject = $cell; |
| 79 | 79 | ||
| 80 | return $cell; | 80 | return $cell; |
| 81 | } // function addCacheData() | 81 | } // function addCacheData() |
| 82 | 82 | ||
| 83 | 83 | ||
| 84 | /** | 84 | /** |
| 85 | * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? | 85 | * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? |
| 86 | * | 86 | * |
| 87 | * @param string $pCoord Coordinate address of the cell to check | 87 | * @param string $pCoord Coordinate address of the cell to check |
| 88 | * @return void | 88 | * @return void |
| 89 | * @return boolean | 89 | * @return boolean |
| 90 | */ | 90 | */ |
| 91 | public function isDataSet($pCoord) { | 91 | public function isDataSet($pCoord) { |
| 92 | // Check if the requested entry is the current object, or exists in the cache | 92 | // Check if the requested entry is the current object, or exists in the cache |
| 93 | if (parent::isDataSet($pCoord)) { | 93 | if (parent::isDataSet($pCoord)) { |
| 94 | if ($this->_currentObjectID == $pCoord) { | 94 | if ($this->_currentObjectID == $pCoord) { |
| 95 | return true; | 95 | return true; |
| 96 | } | 96 | } |
| 97 | // Check if the requested entry still exists in cache | 97 | // Check if the requested entry still exists in cache |
| 98 | $success = wincache_ucache_exists($this->_cachePrefix.$pCoord.'.cache'); | 98 | $success = wincache_ucache_exists($this->_cachePrefix.$pCoord.'.cache'); |
| 99 | if ($success === false) { | 99 | if ($success === false) { |
| 100 | // Entry no longer exists in Wincache, so clear it from the cache array | 100 | // Entry no longer exists in Wincache, so clear it from the cache array |
| 101 | parent::deleteCacheData($pCoord); | 101 | parent::deleteCacheData($pCoord); |
| 102 | throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache'); | 102 | throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache'); |
| 103 | } | 103 | } |
| 104 | return true; | 104 | return true; |
| 105 | } | 105 | } |
| 106 | return false; | 106 | return false; |
| 107 | } // function isDataSet() | 107 | } // function isDataSet() |
| 108 | 108 | ||
| 109 | 109 | ||
| 110 | /** | 110 | /** |
| 111 | * Get cell at a specific coordinate | 111 | * Get cell at a specific coordinate |
| 112 | * | 112 | * |
| 113 | * @param string $pCoord Coordinate of the cell | 113 | * @param string $pCoord Coordinate of the cell |
| 114 | * @throws Exception | 114 | * @throws Exception |
| 115 | * @return PHPExcel_Cell Cell that was found, or null if not found | 115 | * @return PHPExcel_Cell Cell that was found, or null if not found |
| 116 | */ | 116 | */ |
| 117 | public function getCacheData($pCoord) { | 117 | public function getCacheData($pCoord) { |
| 118 | if ($pCoord === $this->_currentObjectID) { | 118 | if ($pCoord === $this->_currentObjectID) { |
| 119 | return $this->_currentObject; | 119 | return $this->_currentObject; |
| 120 | } | 120 | } |
| 121 | $this->_storeData(); | 121 | $this->_storeData(); |
| 122 | 122 | ||
| 123 | // Check if the entry that has been requested actually exists | 123 | // Check if the entry that has been requested actually exists |
| 124 | $obj = null; | 124 | $obj = null; |
| 125 | if (parent::isDataSet($pCoord)) { | 125 | if (parent::isDataSet($pCoord)) { |
| 126 | $success = false; | 126 | $success = false; |
| 127 | $obj = wincache_ucache_get($this->_cachePrefix.$pCoord.'.cache', $success); | 127 | $obj = wincache_ucache_get($this->_cachePrefix.$pCoord.'.cache', $success); |
| 128 | if ($success === false) { | 128 | if ($success === false) { |
| 129 | // Entry no longer exists in WinCache, so clear it from the cache array | 129 | // Entry no longer exists in WinCache, so clear it from the cache array |
| 130 | parent::deleteCacheData($pCoord); | 130 | parent::deleteCacheData($pCoord); |
| 131 | throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache'); | 131 | throw new Exception('Cell entry '.$cellID.' no longer exists in WinCache'); |
| 132 | } | 132 | } |
| 133 | } else { | 133 | } else { |
| 134 | // Return null if requested entry doesn't exist in cache | 134 | // Return null if requested entry doesn't exist in cache |
| 135 | return null; | 135 | return null; |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | // Set current entry to the requested entry | 138 | // Set current entry to the requested entry |
| 139 | $this->_currentObjectID = $pCoord; | 139 | $this->_currentObjectID = $pCoord; |
| 140 | $this->_currentObject = unserialize($obj); | 140 | $this->_currentObject = unserialize($obj); |
| 141 | // Re-attach the parent worksheet | 141 | // Re-attach the parent worksheet |
| 142 | $this->_currentObject->attach($this->_parent); | 142 | $this->_currentObject->attach($this->_parent); |
| 143 | 143 | ||
| 144 | // Return requested entry | 144 | // Return requested entry |
| 145 | return $this->_currentObject; | 145 | return $this->_currentObject; |
| 146 | } // function getCacheData() | 146 | } // function getCacheData() |
| 147 | 147 | ||
| 148 | 148 | ||
| 149 | /** | 149 | /** |
| 150 | * Delete a cell in cache identified by coordinate address | 150 | * Delete a cell in cache identified by coordinate address |
| 151 | * | 151 | * |
| 152 | * @param string $pCoord Coordinate address of the cell to delete | 152 | * @param string $pCoord Coordinate address of the cell to delete |
| 153 | * @throws Exception | 153 | * @throws Exception |
| 154 | */ | 154 | */ |
| 155 | public function deleteCacheData($pCoord) { | 155 | public function deleteCacheData($pCoord) { |
| 156 | // Delete the entry from Wincache | 156 | // Delete the entry from Wincache |
| 157 | wincache_ucache_delete($this->_cachePrefix.$pCoord.'.cache'); | 157 | wincache_ucache_delete($this->_cachePrefix.$pCoord.'.cache'); |
| 158 | 158 | ||
| 159 | // Delete the entry from our cell address array | 159 | // Delete the entry from our cell address array |
| 160 | parent::deleteCacheData($pCoord); | 160 | parent::deleteCacheData($pCoord); |
| 161 | } // function deleteCacheData() | 161 | } // function deleteCacheData() |
| 162 | 162 | ||
| 163 | 163 | ||
| 164 | /** | 164 | /** |
| 165 | * Clone the cell collection | 165 | * Clone the cell collection |
| 166 | * | 166 | * |
| 167 | * @return void | 167 | * @return void |
| 168 | */ | 168 | */ |
| 169 | public function copyCellCollection(PHPExcel_Worksheet $parent) { | 169 | public function copyCellCollection(PHPExcel_Worksheet $parent) { |
| 170 | parent::copyCellCollection($parent); | 170 | parent::copyCellCollection($parent); |
| 171 | // Get a new id for the new file name | 171 | // Get a new id for the new file name |
| 172 | $baseUnique = $this->_getUniqueID(); | 172 | $baseUnique = $this->_getUniqueID(); |
| 173 | $newCachePrefix = substr(md5($baseUnique),0,8).'.'; | 173 | $newCachePrefix = substr(md5($baseUnique),0,8).'.'; |
| 174 | $cacheList = $this->getCellList(); | 174 | $cacheList = $this->getCellList(); |
| 175 | foreach($cacheList as $cellID) { | 175 | foreach($cacheList as $cellID) { |
| 176 | if ($cellID != $this->_currentObjectID) { | 176 | if ($cellID != $this->_currentObjectID) { |
| 177 | $success = false; | 177 | $success = false; |
| 178 | $obj = wincache_ucache_get($this->_cachePrefix.$cellID.'.cache', $success); | 178 | $obj = wincache_ucache_get($this->_cachePrefix.$cellID.'.cache', $success); |
| 179 | if ($success === false) { | 179 | if ($success === false) { |
| 180 | // Entry no longer exists in WinCache, so clear it from the cache array | 180 | // Entry no longer exists in WinCache, so clear it from the cache array |
| 181 | parent::deleteCacheData($cellID); | 181 | parent::deleteCacheData($cellID); |
| 182 | throw new Exception('Cell entry '.$cellID.' no longer exists in Wincache'); | 182 | throw new Exception('Cell entry '.$cellID.' no longer exists in Wincache'); |
| 183 | } | 183 | } |
| 184 | if (!wincache_ucache_add($newCachePrefix.$cellID.'.cache', $obj, $this->_cacheTime)) { | 184 | if (!wincache_ucache_add($newCachePrefix.$cellID.'.cache', $obj, $this->_cacheTime)) { |
| 185 | $this->__destruct(); | 185 | $this->__destruct(); |
| 186 | throw new Exception('Failed to store cell '.$cellID.' in Wincache'); | 186 | throw new Exception('Failed to store cell '.$cellID.' in Wincache'); |
| 187 | } | 187 | } |
| 188 | } | 188 | } |
| 189 | } | 189 | } |
| 190 | $this->_cachePrefix = $newCachePrefix; | 190 | $this->_cachePrefix = $newCachePrefix; |
| 191 | } // function copyCellCollection() | 191 | } // function copyCellCollection() |
| 192 | 192 | ||
| 193 | 193 | ||
| 194 | public function unsetWorksheetCells() { | 194 | public function unsetWorksheetCells() { |
| 195 | if(!is_null($this->_currentObject)) { | 195 | if(!is_null($this->_currentObject)) { |
| 196 | $this->_currentObject->detach(); | 196 | $this->_currentObject->detach(); |
| 197 | $this->_currentObject = $this->_currentObjectID = null; | 197 | $this->_currentObject = $this->_currentObjectID = null; |
| 198 | } | 198 | } |
| 199 | 199 | ||
| 200 | // Flush the WinCache cache | 200 | // Flush the WinCache cache |
| 201 | $this->__destruct(); | 201 | $this->__destruct(); |
| 202 | 202 | ||
| 203 | $this->_cellCache = array(); | 203 | $this->_cellCache = array(); |
| 204 | 204 | ||
| 205 | // detach ourself from the worksheet, so that it can then delete this object successfully | 205 | // detach ourself from the worksheet, so that it can then delete this object successfully |
| 206 | $this->_parent = null; | 206 | $this->_parent = null; |
| 207 | } // function unsetWorksheetCells() | 207 | } // function unsetWorksheetCells() |
| 208 | 208 | ||
| 209 | 209 | ||
| 210 | public function __construct(PHPExcel_Worksheet $parent, $arguments) { | 210 | public function __construct(PHPExcel_Worksheet $parent, $arguments) { |
| 211 | $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; | 211 | $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; |
| 212 | 212 | ||
| 213 | if (is_null($this->_cachePrefix)) { | 213 | if (is_null($this->_cachePrefix)) { |
| 214 | $baseUnique = $this->_getUniqueID(); | 214 | $baseUnique = $this->_getUniqueID(); |
| 215 | $this->_cachePrefix = substr(md5($baseUnique),0,8).'.'; | 215 | $this->_cachePrefix = substr(md5($baseUnique),0,8).'.'; |
| 216 | $this->_cacheTime = $cacheTime; | 216 | $this->_cacheTime = $cacheTime; |
| 217 | 217 | ||
| 218 | parent::__construct($parent); | 218 | parent::__construct($parent); |
| 219 | } | 219 | } |
| 220 | } // function __construct() | 220 | } // function __construct() |
| 221 | 221 | ||
| 222 | 222 | ||
| 223 | public function __destruct() { | 223 | public function __destruct() { |
| 224 | $cacheList = $this->getCellList(); | 224 | $cacheList = $this->getCellList(); |
| 225 | foreach($cacheList as $cellID) { | 225 | foreach($cacheList as $cellID) { |
| 226 | wincache_ucache_delete($this->_cachePrefix.$cellID.'.cache'); | 226 | wincache_ucache_delete($this->_cachePrefix.$cellID.'.cache'); |
| 227 | } | 227 | } |
| 228 | } // function __destruct() | 228 | } // function __destruct() |
| 229 | 229 | ||
| 230 | } | 230 | } | ... | ... |
| ... | @@ -184,9 +184,9 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader | ... | @@ -184,9 +184,9 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader |
| 184 | */ | 184 | */ |
| 185 | public function canRead($pFilename) | 185 | public function canRead($pFilename) |
| 186 | { | 186 | { |
| 187 | // Check if zip class exists | 187 | // Check if zip class exists |
| 188 | if (!class_exists('ZipArchive')) { | 188 | if (!class_exists('ZipArchive')) { |
| 189 | return false; | 189 | return false; |
| 190 | } | 190 | } |
| 191 | 191 | ||
| 192 | // Check if file exists | 192 | // Check if file exists |
| ... | @@ -822,11 +822,11 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader | ... | @@ -822,11 +822,11 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader |
| 822 | } else { | 822 | } else { |
| 823 | // Formula | 823 | // Formula |
| 824 | $this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToBool'); | 824 | $this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToBool'); |
| 825 | if (isset($c->f['t'])) { | 825 | if (isset($c->f['t'])) { |
| 826 | $att = array(); | 826 | $att = array(); |
| 827 | $att = $c->f; | 827 | $att = $c->f; |
| 828 | $docSheet->getCell($r)->setFormulaAttributes($att); | 828 | $docSheet->getCell($r)->setFormulaAttributes($att); |
| 829 | } | 829 | } |
| 830 | // echo '$calculatedValue = '.$calculatedValue.'<br />'; | 830 | // echo '$calculatedValue = '.$calculatedValue.'<br />'; |
| 831 | } | 831 | } |
| 832 | break; | 832 | break; |
| ... | @@ -1592,7 +1592,7 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader | ... | @@ -1592,7 +1592,7 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader |
| 1592 | if (isset($style->fill)) { | 1592 | if (isset($style->fill)) { |
| 1593 | if ($style->fill->gradientFill) { | 1593 | if ($style->fill->gradientFill) { |
| 1594 | $gradientFill = $style->fill->gradientFill[0]; | 1594 | $gradientFill = $style->fill->gradientFill[0]; |
| 1595 | if(!empty($gradientFill["type"])) { | 1595 | if(!empty($gradientFill["type"])) { |
| 1596 | $docStyle->getFill()->setFillType((string) $gradientFill["type"]); | 1596 | $docStyle->getFill()->setFillType((string) $gradientFill["type"]); |
| 1597 | } | 1597 | } |
| 1598 | $docStyle->getFill()->setRotation(floatval($gradientFill["degree"])); | 1598 | $docStyle->getFill()->setRotation(floatval($gradientFill["degree"])); | ... | ... |
This diff could not be displayed because it is too large.
| 1 | GNU LESSER GENERAL PUBLIC LICENSE | 1 | GNU LESSER GENERAL PUBLIC LICENSE |
| 2 | Version 2.1, February 1999 | 2 | Version 2.1, February 1999 |
| 3 | 3 | ||
| 4 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. | 4 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. |
| 5 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 5 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 6 | Everyone is permitted to copy and distribute verbatim copies | 6 | Everyone is permitted to copy and distribute verbatim copies |
| 7 | of this license document, but changing it is not allowed. | 7 | of this license document, but changing it is not allowed. |
| 8 | 8 | ||
| 9 | [This is the first released version of the Lesser GPL. It also counts | 9 | [This is the first released version of the Lesser GPL. It also counts |
| 10 | as the successor of the GNU Library Public License, version 2, hence | 10 | as the successor of the GNU Library Public License, version 2, hence |
| 11 | the version number 2.1.] | 11 | the version number 2.1.] |
| 12 | 12 | ||
| 13 | Preamble | 13 | Preamble |
| 14 | 14 | ||
| 15 | The licenses for most software are designed to take away your | 15 | The licenses for most software are designed to take away your |
| 16 | freedom to share and change it. By contrast, the GNU General Public | 16 | freedom to share and change it. By contrast, the GNU General Public |
| 17 | Licenses are intended to guarantee your freedom to share and change | 17 | Licenses are intended to guarantee your freedom to share and change |
| 18 | free software--to make sure the software is free for all its users. | 18 | free software--to make sure the software is free for all its users. |
| 19 | 19 | ||
| 20 | This license, the Lesser General Public License, applies to some | 20 | This license, the Lesser General Public License, applies to some |
| 21 | specially designated software packages--typically libraries--of the | 21 | specially designated software packages--typically libraries--of the |
| 22 | Free Software Foundation and other authors who decide to use it. You | 22 | Free Software Foundation and other authors who decide to use it. You |
| 23 | can use it too, but we suggest you first think carefully about whether | 23 | can use it too, but we suggest you first think carefully about whether |
| 24 | this license or the ordinary General Public License is the better | 24 | this license or the ordinary General Public License is the better |
| 25 | strategy to use in any particular case, based on the explanations below. | 25 | strategy to use in any particular case, based on the explanations below. |
| 26 | 26 | ||
| 27 | When we speak of free software, we are referring to freedom of use, | 27 | When we speak of free software, we are referring to freedom of use, |
| 28 | not price. Our General Public Licenses are designed to make sure that | 28 | not price. Our General Public Licenses are designed to make sure that |
| 29 | you have the freedom to distribute copies of free software (and charge | 29 | you have the freedom to distribute copies of free software (and charge |
| 30 | for this service if you wish); that you receive source code or can get | 30 | for this service if you wish); that you receive source code or can get |
| 31 | it if you want it; that you can change the software and use pieces of | 31 | it if you want it; that you can change the software and use pieces of |
| 32 | it in new free programs; and that you are informed that you can do | 32 | it in new free programs; and that you are informed that you can do |
| 33 | these things. | 33 | these things. |
| 34 | 34 | ||
| 35 | To protect your rights, we need to make restrictions that forbid | 35 | To protect your rights, we need to make restrictions that forbid |
| 36 | distributors to deny you these rights or to ask you to surrender these | 36 | distributors to deny you these rights or to ask you to surrender these |
| 37 | rights. These restrictions translate to certain responsibilities for | 37 | rights. These restrictions translate to certain responsibilities for |
| 38 | you if you distribute copies of the library or if you modify it. | 38 | you if you distribute copies of the library or if you modify it. |
| 39 | 39 | ||
| 40 | For example, if you distribute copies of the library, whether gratis | 40 | For example, if you distribute copies of the library, whether gratis |
| 41 | or for a fee, you must give the recipients all the rights that we gave | 41 | or for a fee, you must give the recipients all the rights that we gave |
| 42 | you. You must make sure that they, too, receive or can get the source | 42 | you. You must make sure that they, too, receive or can get the source |
| 43 | code. If you link other code with the library, you must provide | 43 | code. If you link other code with the library, you must provide |
| 44 | complete object files to the recipients, so that they can relink them | 44 | complete object files to the recipients, so that they can relink them |
| 45 | with the library after making changes to the library and recompiling | 45 | with the library after making changes to the library and recompiling |
| 46 | it. And you must show them these terms so they know their rights. | 46 | it. And you must show them these terms so they know their rights. |
| 47 | 47 | ||
| 48 | We protect your rights with a two-step method: (1) we copyright the | 48 | We protect your rights with a two-step method: (1) we copyright the |
| 49 | library, and (2) we offer you this license, which gives you legal | 49 | library, and (2) we offer you this license, which gives you legal |
| 50 | permission to copy, distribute and/or modify the library. | 50 | permission to copy, distribute and/or modify the library. |
| 51 | 51 | ||
| 52 | To protect each distributor, we want to make it very clear that | 52 | To protect each distributor, we want to make it very clear that |
| 53 | there is no warranty for the free library. Also, if the library is | 53 | there is no warranty for the free library. Also, if the library is |
| 54 | modified by someone else and passed on, the recipients should know | 54 | modified by someone else and passed on, the recipients should know |
| 55 | that what they have is not the original version, so that the original | 55 | that what they have is not the original version, so that the original |
| 56 | author's reputation will not be affected by problems that might be | 56 | author's reputation will not be affected by problems that might be |
| 57 | introduced by others. | 57 | introduced by others. |
| 58 | 58 | ||
| 59 | Finally, software patents pose a constant threat to the existence of | 59 | Finally, software patents pose a constant threat to the existence of |
| 60 | any free program. We wish to make sure that a company cannot | 60 | any free program. We wish to make sure that a company cannot |
| 61 | effectively restrict the users of a free program by obtaining a | 61 | effectively restrict the users of a free program by obtaining a |
| 62 | restrictive license from a patent holder. Therefore, we insist that | 62 | restrictive license from a patent holder. Therefore, we insist that |
| 63 | any patent license obtained for a version of the library must be | 63 | any patent license obtained for a version of the library must be |
| 64 | consistent with the full freedom of use specified in this license. | 64 | consistent with the full freedom of use specified in this license. |
| 65 | 65 | ||
| 66 | Most GNU software, including some libraries, is covered by the | 66 | Most GNU software, including some libraries, is covered by the |
| 67 | ordinary GNU General Public License. This license, the GNU Lesser | 67 | ordinary GNU General Public License. This license, the GNU Lesser |
| 68 | General Public License, applies to certain designated libraries, and | 68 | General Public License, applies to certain designated libraries, and |
| 69 | is quite different from the ordinary General Public License. We use | 69 | is quite different from the ordinary General Public License. We use |
| 70 | this license for certain libraries in order to permit linking those | 70 | this license for certain libraries in order to permit linking those |
| 71 | libraries into non-free programs. | 71 | libraries into non-free programs. |
| 72 | 72 | ||
| 73 | When a program is linked with a library, whether statically or using | 73 | When a program is linked with a library, whether statically or using |
| 74 | a shared library, the combination of the two is legally speaking a | 74 | a shared library, the combination of the two is legally speaking a |
| 75 | combined work, a derivative of the original library. The ordinary | 75 | combined work, a derivative of the original library. The ordinary |
| 76 | General Public License therefore permits such linking only if the | 76 | General Public License therefore permits such linking only if the |
| 77 | entire combination fits its criteria of freedom. The Lesser General | 77 | entire combination fits its criteria of freedom. The Lesser General |
| 78 | Public License permits more lax criteria for linking other code with | 78 | Public License permits more lax criteria for linking other code with |
| 79 | the library. | 79 | the library. |
| 80 | 80 | ||
| 81 | We call this license the "Lesser" General Public License because it | 81 | We call this license the "Lesser" General Public License because it |
| 82 | does Less to protect the user's freedom than the ordinary General | 82 | does Less to protect the user's freedom than the ordinary General |
| 83 | Public License. It also provides other free software developers Less | 83 | Public License. It also provides other free software developers Less |
| 84 | of an advantage over competing non-free programs. These disadvantages | 84 | of an advantage over competing non-free programs. These disadvantages |
| 85 | are the reason we use the ordinary General Public License for many | 85 | are the reason we use the ordinary General Public License for many |
| 86 | libraries. However, the Lesser license provides advantages in certain | 86 | libraries. However, the Lesser license provides advantages in certain |
| 87 | special circumstances. | 87 | special circumstances. |
| 88 | 88 | ||
| 89 | For example, on rare occasions, there may be a special need to | 89 | For example, on rare occasions, there may be a special need to |
| 90 | encourage the widest possible use of a certain library, so that it becomes | 90 | encourage the widest possible use of a certain library, so that it becomes |
| 91 | a de-facto standard. To achieve this, non-free programs must be | 91 | a de-facto standard. To achieve this, non-free programs must be |
| 92 | allowed to use the library. A more frequent case is that a free | 92 | allowed to use the library. A more frequent case is that a free |
| 93 | library does the same job as widely used non-free libraries. In this | 93 | library does the same job as widely used non-free libraries. In this |
| 94 | case, there is little to gain by limiting the free library to free | 94 | case, there is little to gain by limiting the free library to free |
| 95 | software only, so we use the Lesser General Public License. | 95 | software only, so we use the Lesser General Public License. |
| 96 | 96 | ||
| 97 | In other cases, permission to use a particular library in non-free | 97 | In other cases, permission to use a particular library in non-free |
| 98 | programs enables a greater number of people to use a large body of | 98 | programs enables a greater number of people to use a large body of |
| 99 | free software. For example, permission to use the GNU C Library in | 99 | free software. For example, permission to use the GNU C Library in |
| 100 | non-free programs enables many more people to use the whole GNU | 100 | non-free programs enables many more people to use the whole GNU |
| 101 | operating system, as well as its variant, the GNU/Linux operating | 101 | operating system, as well as its variant, the GNU/Linux operating |
| 102 | system. | 102 | system. |
| 103 | 103 | ||
| 104 | Although the Lesser General Public License is Less protective of the | 104 | Although the Lesser General Public License is Less protective of the |
| 105 | users' freedom, it does ensure that the user of a program that is | 105 | users' freedom, it does ensure that the user of a program that is |
| 106 | linked with the Library has the freedom and the wherewithal to run | 106 | linked with the Library has the freedom and the wherewithal to run |
| 107 | that program using a modified version of the Library. | 107 | that program using a modified version of the Library. |
| 108 | 108 | ||
| 109 | The precise terms and conditions for copying, distribution and | 109 | The precise terms and conditions for copying, distribution and |
| 110 | modification follow. Pay close attention to the difference between a | 110 | modification follow. Pay close attention to the difference between a |
| 111 | "work based on the library" and a "work that uses the library". The | 111 | "work based on the library" and a "work that uses the library". The |
| 112 | former contains code derived from the library, whereas the latter must | 112 | former contains code derived from the library, whereas the latter must |
| 113 | be combined with the library in order to run. | 113 | be combined with the library in order to run. |
| 114 | 114 | ||
| 115 | GNU LESSER GENERAL PUBLIC LICENSE | 115 | GNU LESSER GENERAL PUBLIC LICENSE |
| 116 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | 116 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
| 117 | 117 | ||
| 118 | 0. This License Agreement applies to any software library or other | 118 | 0. This License Agreement applies to any software library or other |
| 119 | program which contains a notice placed by the copyright holder or | 119 | program which contains a notice placed by the copyright holder or |
| 120 | other authorized party saying it may be distributed under the terms of | 120 | other authorized party saying it may be distributed under the terms of |
| 121 | this Lesser General Public License (also called "this License"). | 121 | this Lesser General Public License (also called "this License"). |
| 122 | Each licensee is addressed as "you". | 122 | Each licensee is addressed as "you". |
| 123 | 123 | ||
| 124 | A "library" means a collection of software functions and/or data | 124 | A "library" means a collection of software functions and/or data |
| 125 | prepared so as to be conveniently linked with application programs | 125 | prepared so as to be conveniently linked with application programs |
| 126 | (which use some of those functions and data) to form executables. | 126 | (which use some of those functions and data) to form executables. |
| 127 | 127 | ||
| 128 | The "Library", below, refers to any such software library or work | 128 | The "Library", below, refers to any such software library or work |
| 129 | which has been distributed under these terms. A "work based on the | 129 | which has been distributed under these terms. A "work based on the |
| 130 | Library" means either the Library or any derivative work under | 130 | Library" means either the Library or any derivative work under |
| 131 | copyright law: that is to say, a work containing the Library or a | 131 | copyright law: that is to say, a work containing the Library or a |
| 132 | portion of it, either verbatim or with modifications and/or translated | 132 | portion of it, either verbatim or with modifications and/or translated |
| 133 | straightforwardly into another language. (Hereinafter, translation is | 133 | straightforwardly into another language. (Hereinafter, translation is |
| 134 | included without limitation in the term "modification".) | 134 | included without limitation in the term "modification".) |
| 135 | 135 | ||
| 136 | "Source code" for a work means the preferred form of the work for | 136 | "Source code" for a work means the preferred form of the work for |
| 137 | making modifications to it. For a library, complete source code means | 137 | making modifications to it. For a library, complete source code means |
| 138 | all the source code for all modules it contains, plus any associated | 138 | all the source code for all modules it contains, plus any associated |
| 139 | interface definition files, plus the scripts used to control compilation | 139 | interface definition files, plus the scripts used to control compilation |
| 140 | and installation of the library. | 140 | and installation of the library. |
| 141 | 141 | ||
| 142 | Activities other than copying, distribution and modification are not | 142 | Activities other than copying, distribution and modification are not |
| 143 | covered by this License; they are outside its scope. The act of | 143 | covered by this License; they are outside its scope. The act of |
| 144 | running a program using the Library is not restricted, and output from | 144 | running a program using the Library is not restricted, and output from |
| 145 | such a program is covered only if its contents constitute a work based | 145 | such a program is covered only if its contents constitute a work based |
| 146 | on the Library (independent of the use of the Library in a tool for | 146 | on the Library (independent of the use of the Library in a tool for |
| 147 | writing it). Whether that is true depends on what the Library does | 147 | writing it). Whether that is true depends on what the Library does |
| 148 | and what the program that uses the Library does. | 148 | and what the program that uses the Library does. |
| 149 | 149 | ||
| 150 | 1. You may copy and distribute verbatim copies of the Library's | 150 | 1. You may copy and distribute verbatim copies of the Library's |
| 151 | complete source code as you receive it, in any medium, provided that | 151 | complete source code as you receive it, in any medium, provided that |
| 152 | you conspicuously and appropriately publish on each copy an | 152 | you conspicuously and appropriately publish on each copy an |
| 153 | appropriate copyright notice and disclaimer of warranty; keep intact | 153 | appropriate copyright notice and disclaimer of warranty; keep intact |
| 154 | all the notices that refer to this License and to the absence of any | 154 | all the notices that refer to this License and to the absence of any |
| 155 | warranty; and distribute a copy of this License along with the | 155 | warranty; and distribute a copy of this License along with the |
| 156 | Library. | 156 | Library. |
| 157 | 157 | ||
| 158 | You may charge a fee for the physical act of transferring a copy, | 158 | You may charge a fee for the physical act of transferring a copy, |
| 159 | and you may at your option offer warranty protection in exchange for a | 159 | and you may at your option offer warranty protection in exchange for a |
| 160 | fee. | 160 | fee. |
| 161 | 161 | ||
| 162 | 2. You may modify your copy or copies of the Library or any portion | 162 | 2. You may modify your copy or copies of the Library or any portion |
| 163 | of it, thus forming a work based on the Library, and copy and | 163 | of it, thus forming a work based on the Library, and copy and |
| 164 | distribute such modifications or work under the terms of Section 1 | 164 | distribute such modifications or work under the terms of Section 1 |
| 165 | above, provided that you also meet all of these conditions: | 165 | above, provided that you also meet all of these conditions: |
| 166 | 166 | ||
| 167 | a) The modified work must itself be a software library. | 167 | a) The modified work must itself be a software library. |
| 168 | 168 | ||
| 169 | b) You must cause the files modified to carry prominent notices | 169 | b) You must cause the files modified to carry prominent notices |
| 170 | stating that you changed the files and the date of any change. | 170 | stating that you changed the files and the date of any change. |
| 171 | 171 | ||
| 172 | c) You must cause the whole of the work to be licensed at no | 172 | c) You must cause the whole of the work to be licensed at no |
| 173 | charge to all third parties under the terms of this License. | 173 | charge to all third parties under the terms of this License. |
| 174 | 174 | ||
| 175 | d) If a facility in the modified Library refers to a function or a | 175 | d) If a facility in the modified Library refers to a function or a |
| 176 | table of data to be supplied by an application program that uses | 176 | table of data to be supplied by an application program that uses |
| 177 | the facility, other than as an argument passed when the facility | 177 | the facility, other than as an argument passed when the facility |
| 178 | is invoked, then you must make a good faith effort to ensure that, | 178 | is invoked, then you must make a good faith effort to ensure that, |
| 179 | in the event an application does not supply such function or | 179 | in the event an application does not supply such function or |
| 180 | table, the facility still operates, and performs whatever part of | 180 | table, the facility still operates, and performs whatever part of |
| 181 | its purpose remains meaningful. | 181 | its purpose remains meaningful. |
| 182 | 182 | ||
| 183 | (For example, a function in a library to compute square roots has | 183 | (For example, a function in a library to compute square roots has |
| 184 | a purpose that is entirely well-defined independent of the | 184 | a purpose that is entirely well-defined independent of the |
| 185 | application. Therefore, Subsection 2d requires that any | 185 | application. Therefore, Subsection 2d requires that any |
| 186 | application-supplied function or table used by this function must | 186 | application-supplied function or table used by this function must |
| 187 | be optional: if the application does not supply it, the square | 187 | be optional: if the application does not supply it, the square |
| 188 | root function must still compute square roots.) | 188 | root function must still compute square roots.) |
| 189 | 189 | ||
| 190 | These requirements apply to the modified work as a whole. If | 190 | These requirements apply to the modified work as a whole. If |
| 191 | identifiable sections of that work are not derived from the Library, | 191 | identifiable sections of that work are not derived from the Library, |
| 192 | and can be reasonably considered independent and separate works in | 192 | and can be reasonably considered independent and separate works in |
| 193 | themselves, then this License, and its terms, do not apply to those | 193 | themselves, then this License, and its terms, do not apply to those |
| 194 | sections when you distribute them as separate works. But when you | 194 | sections when you distribute them as separate works. But when you |
| 195 | distribute the same sections as part of a whole which is a work based | 195 | distribute the same sections as part of a whole which is a work based |
| 196 | on the Library, the distribution of the whole must be on the terms of | 196 | on the Library, the distribution of the whole must be on the terms of |
| 197 | this License, whose permissions for other licensees extend to the | 197 | this License, whose permissions for other licensees extend to the |
| 198 | entire whole, and thus to each and every part regardless of who wrote | 198 | entire whole, and thus to each and every part regardless of who wrote |
| 199 | it. | 199 | it. |
| 200 | 200 | ||
| 201 | Thus, it is not the intent of this section to claim rights or contest | 201 | Thus, it is not the intent of this section to claim rights or contest |
| 202 | your rights to work written entirely by you; rather, the intent is to | 202 | your rights to work written entirely by you; rather, the intent is to |
| 203 | exercise the right to control the distribution of derivative or | 203 | exercise the right to control the distribution of derivative or |
| 204 | collective works based on the Library. | 204 | collective works based on the Library. |
| 205 | 205 | ||
| 206 | In addition, mere aggregation of another work not based on the Library | 206 | In addition, mere aggregation of another work not based on the Library |
| 207 | with the Library (or with a work based on the Library) on a volume of | 207 | with the Library (or with a work based on the Library) on a volume of |
| 208 | a storage or distribution medium does not bring the other work under | 208 | a storage or distribution medium does not bring the other work under |
| 209 | the scope of this License. | 209 | the scope of this License. |
| 210 | 210 | ||
| 211 | 3. You may opt to apply the terms of the ordinary GNU General Public | 211 | 3. You may opt to apply the terms of the ordinary GNU General Public |
| 212 | License instead of this License to a given copy of the Library. To do | 212 | License instead of this License to a given copy of the Library. To do |
| 213 | this, you must alter all the notices that refer to this License, so | 213 | this, you must alter all the notices that refer to this License, so |
| 214 | that they refer to the ordinary GNU General Public License, version 2, | 214 | that they refer to the ordinary GNU General Public License, version 2, |
| 215 | instead of to this License. (If a newer version than version 2 of the | 215 | instead of to this License. (If a newer version than version 2 of the |
| 216 | ordinary GNU General Public License has appeared, then you can specify | 216 | ordinary GNU General Public License has appeared, then you can specify |
| 217 | that version instead if you wish.) Do not make any other change in | 217 | that version instead if you wish.) Do not make any other change in |
| 218 | these notices. | 218 | these notices. |
| 219 | 219 | ||
| 220 | Once this change is made in a given copy, it is irreversible for | 220 | Once this change is made in a given copy, it is irreversible for |
| 221 | that copy, so the ordinary GNU General Public License applies to all | 221 | that copy, so the ordinary GNU General Public License applies to all |
| 222 | subsequent copies and derivative works made from that copy. | 222 | subsequent copies and derivative works made from that copy. |
| 223 | 223 | ||
| 224 | This option is useful when you wish to copy part of the code of | 224 | This option is useful when you wish to copy part of the code of |
| 225 | the Library into a program that is not a library. | 225 | the Library into a program that is not a library. |
| 226 | 226 | ||
| 227 | 4. You may copy and distribute the Library (or a portion or | 227 | 4. You may copy and distribute the Library (or a portion or |
| 228 | derivative of it, under Section 2) in object code or executable form | 228 | derivative of it, under Section 2) in object code or executable form |
| 229 | under the terms of Sections 1 and 2 above provided that you accompany | 229 | under the terms of Sections 1 and 2 above provided that you accompany |
| 230 | it with the complete corresponding machine-readable source code, which | 230 | it with the complete corresponding machine-readable source code, which |
| 231 | must be distributed under the terms of Sections 1 and 2 above on a | 231 | must be distributed under the terms of Sections 1 and 2 above on a |
| 232 | medium customarily used for software interchange. | 232 | medium customarily used for software interchange. |
| 233 | 233 | ||
| 234 | If distribution of object code is made by offering access to copy | 234 | If distribution of object code is made by offering access to copy |
| 235 | from a designated place, then offering equivalent access to copy the | 235 | from a designated place, then offering equivalent access to copy the |
| 236 | source code from the same place satisfies the requirement to | 236 | source code from the same place satisfies the requirement to |
| 237 | distribute the source code, even though third parties are not | 237 | distribute the source code, even though third parties are not |
| 238 | compelled to copy the source along with the object code. | 238 | compelled to copy the source along with the object code. |
| 239 | 239 | ||
| 240 | 5. A program that contains no derivative of any portion of the | 240 | 5. A program that contains no derivative of any portion of the |
| 241 | Library, but is designed to work with the Library by being compiled or | 241 | Library, but is designed to work with the Library by being compiled or |
| 242 | linked with it, is called a "work that uses the Library". Such a | 242 | linked with it, is called a "work that uses the Library". Such a |
| 243 | work, in isolation, is not a derivative work of the Library, and | 243 | work, in isolation, is not a derivative work of the Library, and |
| 244 | therefore falls outside the scope of this License. | 244 | therefore falls outside the scope of this License. |
| 245 | 245 | ||
| 246 | However, linking a "work that uses the Library" with the Library | 246 | However, linking a "work that uses the Library" with the Library |
| 247 | creates an executable that is a derivative of the Library (because it | 247 | creates an executable that is a derivative of the Library (because it |
| 248 | contains portions of the Library), rather than a "work that uses the | 248 | contains portions of the Library), rather than a "work that uses the |
| 249 | library". The executable is therefore covered by this License. | 249 | library". The executable is therefore covered by this License. |
| 250 | Section 6 states terms for distribution of such executables. | 250 | Section 6 states terms for distribution of such executables. |
| 251 | 251 | ||
| 252 | When a "work that uses the Library" uses material from a header file | 252 | When a "work that uses the Library" uses material from a header file |
| 253 | that is part of the Library, the object code for the work may be a | 253 | that is part of the Library, the object code for the work may be a |
| 254 | derivative work of the Library even though the source code is not. | 254 | derivative work of the Library even though the source code is not. |
| 255 | Whether this is true is especially significant if the work can be | 255 | Whether this is true is especially significant if the work can be |
| 256 | linked without the Library, or if the work is itself a library. The | 256 | linked without the Library, or if the work is itself a library. The |
| 257 | threshold for this to be true is not precisely defined by law. | 257 | threshold for this to be true is not precisely defined by law. |
| 258 | 258 | ||
| 259 | If such an object file uses only numerical parameters, data | 259 | If such an object file uses only numerical parameters, data |
| 260 | structure layouts and accessors, and small macros and small inline | 260 | structure layouts and accessors, and small macros and small inline |
| 261 | functions (ten lines or less in length), then the use of the object | 261 | functions (ten lines or less in length), then the use of the object |
| 262 | file is unrestricted, regardless of whether it is legally a derivative | 262 | file is unrestricted, regardless of whether it is legally a derivative |
| 263 | work. (Executables containing this object code plus portions of the | 263 | work. (Executables containing this object code plus portions of the |
| 264 | Library will still fall under Section 6.) | 264 | Library will still fall under Section 6.) |
| 265 | 265 | ||
| 266 | Otherwise, if the work is a derivative of the Library, you may | 266 | Otherwise, if the work is a derivative of the Library, you may |
| 267 | distribute the object code for the work under the terms of Section 6. | 267 | distribute the object code for the work under the terms of Section 6. |
| 268 | Any executables containing that work also fall under Section 6, | 268 | Any executables containing that work also fall under Section 6, |
| 269 | whether or not they are linked directly with the Library itself. | 269 | whether or not they are linked directly with the Library itself. |
| 270 | 270 | ||
| 271 | 6. As an exception to the Sections above, you may also combine or | 271 | 6. As an exception to the Sections above, you may also combine or |
| 272 | link a "work that uses the Library" with the Library to produce a | 272 | link a "work that uses the Library" with the Library to produce a |
| 273 | work containing portions of the Library, and distribute that work | 273 | work containing portions of the Library, and distribute that work |
| 274 | under terms of your choice, provided that the terms permit | 274 | under terms of your choice, provided that the terms permit |
| 275 | modification of the work for the customer's own use and reverse | 275 | modification of the work for the customer's own use and reverse |
| 276 | engineering for debugging such modifications. | 276 | engineering for debugging such modifications. |
| 277 | 277 | ||
| 278 | You must give prominent notice with each copy of the work that the | 278 | You must give prominent notice with each copy of the work that the |
| 279 | Library is used in it and that the Library and its use are covered by | 279 | Library is used in it and that the Library and its use are covered by |
| 280 | this License. You must supply a copy of this License. If the work | 280 | this License. You must supply a copy of this License. If the work |
| 281 | during execution displays copyright notices, you must include the | 281 | during execution displays copyright notices, you must include the |
| 282 | copyright notice for the Library among them, as well as a reference | 282 | copyright notice for the Library among them, as well as a reference |
| 283 | directing the user to the copy of this License. Also, you must do one | 283 | directing the user to the copy of this License. Also, you must do one |
| 284 | of these things: | 284 | of these things: |
| 285 | 285 | ||
| 286 | a) Accompany the work with the complete corresponding | 286 | a) Accompany the work with the complete corresponding |
| 287 | machine-readable source code for the Library including whatever | 287 | machine-readable source code for the Library including whatever |
| 288 | changes were used in the work (which must be distributed under | 288 | changes were used in the work (which must be distributed under |
| 289 | Sections 1 and 2 above); and, if the work is an executable linked | 289 | Sections 1 and 2 above); and, if the work is an executable linked |
| 290 | with the Library, with the complete machine-readable "work that | 290 | with the Library, with the complete machine-readable "work that |
| 291 | uses the Library", as object code and/or source code, so that the | 291 | uses the Library", as object code and/or source code, so that the |
| 292 | user can modify the Library and then relink to produce a modified | 292 | user can modify the Library and then relink to produce a modified |
| 293 | executable containing the modified Library. (It is understood | 293 | executable containing the modified Library. (It is understood |
| 294 | that the user who changes the contents of definitions files in the | 294 | that the user who changes the contents of definitions files in the |
| 295 | Library will not necessarily be able to recompile the application | 295 | Library will not necessarily be able to recompile the application |
| 296 | to use the modified definitions.) | 296 | to use the modified definitions.) |
| 297 | 297 | ||
| 298 | b) Use a suitable shared library mechanism for linking with the | 298 | b) Use a suitable shared library mechanism for linking with the |
| 299 | Library. A suitable mechanism is one that (1) uses at run time a | 299 | Library. A suitable mechanism is one that (1) uses at run time a |
| 300 | copy of the library already present on the user's computer system, | 300 | copy of the library already present on the user's computer system, |
| 301 | rather than copying library functions into the executable, and (2) | 301 | rather than copying library functions into the executable, and (2) |
| 302 | will operate properly with a modified version of the library, if | 302 | will operate properly with a modified version of the library, if |
| 303 | the user installs one, as long as the modified version is | 303 | the user installs one, as long as the modified version is |
| 304 | interface-compatible with the version that the work was made with. | 304 | interface-compatible with the version that the work was made with. |
| 305 | 305 | ||
| 306 | c) Accompany the work with a written offer, valid for at | 306 | c) Accompany the work with a written offer, valid for at |
| 307 | least three years, to give the same user the materials | 307 | least three years, to give the same user the materials |
| 308 | specified in Subsection 6a, above, for a charge no more | 308 | specified in Subsection 6a, above, for a charge no more |
| 309 | than the cost of performing this distribution. | 309 | than the cost of performing this distribution. |
| 310 | 310 | ||
| 311 | d) If distribution of the work is made by offering access to copy | 311 | d) If distribution of the work is made by offering access to copy |
| 312 | from a designated place, offer equivalent access to copy the above | 312 | from a designated place, offer equivalent access to copy the above |
| 313 | specified materials from the same place. | 313 | specified materials from the same place. |
| 314 | 314 | ||
| 315 | e) Verify that the user has already received a copy of these | 315 | e) Verify that the user has already received a copy of these |
| 316 | materials or that you have already sent this user a copy. | 316 | materials or that you have already sent this user a copy. |
| 317 | 317 | ||
| 318 | For an executable, the required form of the "work that uses the | 318 | For an executable, the required form of the "work that uses the |
| 319 | Library" must include any data and utility programs needed for | 319 | Library" must include any data and utility programs needed for |
| 320 | reproducing the executable from it. However, as a special exception, | 320 | reproducing the executable from it. However, as a special exception, |
| 321 | the materials to be distributed need not include anything that is | 321 | the materials to be distributed need not include anything that is |
| 322 | normally distributed (in either source or binary form) with the major | 322 | normally distributed (in either source or binary form) with the major |
| 323 | components (compiler, kernel, and so on) of the operating system on | 323 | components (compiler, kernel, and so on) of the operating system on |
| 324 | which the executable runs, unless that component itself accompanies | 324 | which the executable runs, unless that component itself accompanies |
| 325 | the executable. | 325 | the executable. |
| 326 | 326 | ||
| 327 | It may happen that this requirement contradicts the license | 327 | It may happen that this requirement contradicts the license |
| 328 | restrictions of other proprietary libraries that do not normally | 328 | restrictions of other proprietary libraries that do not normally |
| 329 | accompany the operating system. Such a contradiction means you cannot | 329 | accompany the operating system. Such a contradiction means you cannot |
| 330 | use both them and the Library together in an executable that you | 330 | use both them and the Library together in an executable that you |
| 331 | distribute. | 331 | distribute. |
| 332 | 332 | ||
| 333 | 7. You may place library facilities that are a work based on the | 333 | 7. You may place library facilities that are a work based on the |
| 334 | Library side-by-side in a single library together with other library | 334 | Library side-by-side in a single library together with other library |
| 335 | facilities not covered by this License, and distribute such a combined | 335 | facilities not covered by this License, and distribute such a combined |
| 336 | library, provided that the separate distribution of the work based on | 336 | library, provided that the separate distribution of the work based on |
| 337 | the Library and of the other library facilities is otherwise | 337 | the Library and of the other library facilities is otherwise |
| 338 | permitted, and provided that you do these two things: | 338 | permitted, and provided that you do these two things: |
| 339 | 339 | ||
| 340 | a) Accompany the combined library with a copy of the same work | 340 | a) Accompany the combined library with a copy of the same work |
| 341 | based on the Library, uncombined with any other library | 341 | based on the Library, uncombined with any other library |
| 342 | facilities. This must be distributed under the terms of the | 342 | facilities. This must be distributed under the terms of the |
| 343 | Sections above. | 343 | Sections above. |
| 344 | 344 | ||
| 345 | b) Give prominent notice with the combined library of the fact | 345 | b) Give prominent notice with the combined library of the fact |
| 346 | that part of it is a work based on the Library, and explaining | 346 | that part of it is a work based on the Library, and explaining |
| 347 | where to find the accompanying uncombined form of the same work. | 347 | where to find the accompanying uncombined form of the same work. |
| 348 | 348 | ||
| 349 | 8. You may not copy, modify, sublicense, link with, or distribute | 349 | 8. You may not copy, modify, sublicense, link with, or distribute |
| 350 | the Library except as expressly provided under this License. Any | 350 | the Library except as expressly provided under this License. Any |
| 351 | attempt otherwise to copy, modify, sublicense, link with, or | 351 | attempt otherwise to copy, modify, sublicense, link with, or |
| 352 | distribute the Library is void, and will automatically terminate your | 352 | distribute the Library is void, and will automatically terminate your |
| 353 | rights under this License. However, parties who have received copies, | 353 | rights under this License. However, parties who have received copies, |
| 354 | or rights, from you under this License will not have their licenses | 354 | or rights, from you under this License will not have their licenses |
| 355 | terminated so long as such parties remain in full compliance. | 355 | terminated so long as such parties remain in full compliance. |
| 356 | 356 | ||
| 357 | 9. You are not required to accept this License, since you have not | 357 | 9. You are not required to accept this License, since you have not |
| 358 | signed it. However, nothing else grants you permission to modify or | 358 | signed it. However, nothing else grants you permission to modify or |
| 359 | distribute the Library or its derivative works. These actions are | 359 | distribute the Library or its derivative works. These actions are |
| 360 | prohibited by law if you do not accept this License. Therefore, by | 360 | prohibited by law if you do not accept this License. Therefore, by |
| 361 | modifying or distributing the Library (or any work based on the | 361 | modifying or distributing the Library (or any work based on the |
| 362 | Library), you indicate your acceptance of this License to do so, and | 362 | Library), you indicate your acceptance of this License to do so, and |
| 363 | all its terms and conditions for copying, distributing or modifying | 363 | all its terms and conditions for copying, distributing or modifying |
| 364 | the Library or works based on it. | 364 | the Library or works based on it. |
| 365 | 365 | ||
| 366 | 10. Each time you redistribute the Library (or any work based on the | 366 | 10. Each time you redistribute the Library (or any work based on the |
| 367 | Library), the recipient automatically receives a license from the | 367 | Library), the recipient automatically receives a license from the |
| 368 | original licensor to copy, distribute, link with or modify the Library | 368 | original licensor to copy, distribute, link with or modify the Library |
| 369 | subject to these terms and conditions. You may not impose any further | 369 | subject to these terms and conditions. You may not impose any further |
| 370 | restrictions on the recipients' exercise of the rights granted herein. | 370 | restrictions on the recipients' exercise of the rights granted herein. |
| 371 | You are not responsible for enforcing compliance by third parties with | 371 | You are not responsible for enforcing compliance by third parties with |
| 372 | this License. | 372 | this License. |
| 373 | 373 | ||
| 374 | 11. If, as a consequence of a court judgment or allegation of patent | 374 | 11. If, as a consequence of a court judgment or allegation of patent |
| 375 | infringement or for any other reason (not limited to patent issues), | 375 | infringement or for any other reason (not limited to patent issues), |
| 376 | conditions are imposed on you (whether by court order, agreement or | 376 | conditions are imposed on you (whether by court order, agreement or |
| 377 | otherwise) that contradict the conditions of this License, they do not | 377 | otherwise) that contradict the conditions of this License, they do not |
| 378 | excuse you from the conditions of this License. If you cannot | 378 | excuse you from the conditions of this License. If you cannot |
| 379 | distribute so as to satisfy simultaneously your obligations under this | 379 | distribute so as to satisfy simultaneously your obligations under this |
| 380 | License and any other pertinent obligations, then as a consequence you | 380 | License and any other pertinent obligations, then as a consequence you |
| 381 | may not distribute the Library at all. For example, if a patent | 381 | may not distribute the Library at all. For example, if a patent |
| 382 | license would not permit royalty-free redistribution of the Library by | 382 | license would not permit royalty-free redistribution of the Library by |
| 383 | all those who receive copies directly or indirectly through you, then | 383 | all those who receive copies directly or indirectly through you, then |
| 384 | the only way you could satisfy both it and this License would be to | 384 | the only way you could satisfy both it and this License would be to |
| 385 | refrain entirely from distribution of the Library. | 385 | refrain entirely from distribution of the Library. |
| 386 | 386 | ||
| 387 | If any portion of this section is held invalid or unenforceable under any | 387 | If any portion of this section is held invalid or unenforceable under any |
| 388 | particular circumstance, the balance of the section is intended to apply, | 388 | particular circumstance, the balance of the section is intended to apply, |
| 389 | and the section as a whole is intended to apply in other circumstances. | 389 | and the section as a whole is intended to apply in other circumstances. |
| 390 | 390 | ||
| 391 | It is not the purpose of this section to induce you to infringe any | 391 | It is not the purpose of this section to induce you to infringe any |
| 392 | patents or other property right claims or to contest validity of any | 392 | patents or other property right claims or to contest validity of any |
| 393 | such claims; this section has the sole purpose of protecting the | 393 | such claims; this section has the sole purpose of protecting the |
| 394 | integrity of the free software distribution system which is | 394 | integrity of the free software distribution system which is |
| 395 | implemented by public license practices. Many people have made | 395 | implemented by public license practices. Many people have made |
| 396 | generous contributions to the wide range of software distributed | 396 | generous contributions to the wide range of software distributed |
| 397 | through that system in reliance on consistent application of that | 397 | through that system in reliance on consistent application of that |
| 398 | system; it is up to the author/donor to decide if he or she is willing | 398 | system; it is up to the author/donor to decide if he or she is willing |
| 399 | to distribute software through any other system and a licensee cannot | 399 | to distribute software through any other system and a licensee cannot |
| 400 | impose that choice. | 400 | impose that choice. |
| 401 | 401 | ||
| 402 | This section is intended to make thoroughly clear what is believed to | 402 | This section is intended to make thoroughly clear what is believed to |
| 403 | be a consequence of the rest of this License. | 403 | be a consequence of the rest of this License. |
| 404 | 404 | ||
| 405 | 12. If the distribution and/or use of the Library is restricted in | 405 | 12. If the distribution and/or use of the Library is restricted in |
| 406 | certain countries either by patents or by copyrighted interfaces, the | 406 | certain countries either by patents or by copyrighted interfaces, the |
| 407 | original copyright holder who places the Library under this License may add | 407 | original copyright holder who places the Library under this License may add |
| 408 | an explicit geographical distribution limitation excluding those countries, | 408 | an explicit geographical distribution limitation excluding those countries, |
| 409 | so that distribution is permitted only in or among countries not thus | 409 | so that distribution is permitted only in or among countries not thus |
| 410 | excluded. In such case, this License incorporates the limitation as if | 410 | excluded. In such case, this License incorporates the limitation as if |
| 411 | written in the body of this License. | 411 | written in the body of this License. |
| 412 | 412 | ||
| 413 | 13. The Free Software Foundation may publish revised and/or new | 413 | 13. The Free Software Foundation may publish revised and/or new |
| 414 | versions of the Lesser General Public License from time to time. | 414 | versions of the Lesser General Public License from time to time. |
| 415 | Such new versions will be similar in spirit to the present version, | 415 | Such new versions will be similar in spirit to the present version, |
| 416 | but may differ in detail to address new problems or concerns. | 416 | but may differ in detail to address new problems or concerns. |
| 417 | 417 | ||
| 418 | Each version is given a distinguishing version number. If the Library | 418 | Each version is given a distinguishing version number. If the Library |
| 419 | specifies a version number of this License which applies to it and | 419 | specifies a version number of this License which applies to it and |
| 420 | "any later version", you have the option of following the terms and | 420 | "any later version", you have the option of following the terms and |
| 421 | conditions either of that version or of any later version published by | 421 | conditions either of that version or of any later version published by |
| 422 | the Free Software Foundation. If the Library does not specify a | 422 | the Free Software Foundation. If the Library does not specify a |
| 423 | license version number, you may choose any version ever published by | 423 | license version number, you may choose any version ever published by |
| 424 | the Free Software Foundation. | 424 | the Free Software Foundation. |
| 425 | 425 | ||
| 426 | 14. If you wish to incorporate parts of the Library into other free | 426 | 14. If you wish to incorporate parts of the Library into other free |
| 427 | programs whose distribution conditions are incompatible with these, | 427 | programs whose distribution conditions are incompatible with these, |
| 428 | write to the author to ask for permission. For software which is | 428 | write to the author to ask for permission. For software which is |
| 429 | copyrighted by the Free Software Foundation, write to the Free | 429 | copyrighted by the Free Software Foundation, write to the Free |
| 430 | Software Foundation; we sometimes make exceptions for this. Our | 430 | Software Foundation; we sometimes make exceptions for this. Our |
| 431 | decision will be guided by the two goals of preserving the free status | 431 | decision will be guided by the two goals of preserving the free status |
| 432 | of all derivatives of our free software and of promoting the sharing | 432 | of all derivatives of our free software and of promoting the sharing |
| 433 | and reuse of software generally. | 433 | and reuse of software generally. |
| 434 | 434 | ||
| 435 | NO WARRANTY | 435 | NO WARRANTY |
| 436 | 436 | ||
| 437 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO | 437 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO |
| 438 | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. | 438 | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. |
| 439 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR | 439 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR |
| 440 | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY | 440 | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY |
| 441 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE | 441 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE |
| 442 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 442 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| 443 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE | 443 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE |
| 444 | LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME | 444 | LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME |
| 445 | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | 445 | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
| 446 | 446 | ||
| 447 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN | 447 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN |
| 448 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY | 448 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY |
| 449 | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU | 449 | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU |
| 450 | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR | 450 | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR |
| 451 | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE | 451 | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE |
| 452 | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING | 452 | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING |
| 453 | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A | 453 | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A |
| 454 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF | 454 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF |
| 455 | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH | 455 | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH |
| 456 | DAMAGES. | 456 | DAMAGES. |
| 457 | 457 | ||
| 458 | END OF TERMS AND CONDITIONS | 458 | END OF TERMS AND CONDITIONS |
| 459 | 459 | ||
| 460 | How to Apply These Terms to Your New Libraries | 460 | How to Apply These Terms to Your New Libraries |
| 461 | 461 | ||
| 462 | If you develop a new library, and you want it to be of the greatest | 462 | If you develop a new library, and you want it to be of the greatest |
| 463 | possible use to the public, we recommend making it free software that | 463 | possible use to the public, we recommend making it free software that |
| 464 | everyone can redistribute and change. You can do so by permitting | 464 | everyone can redistribute and change. You can do so by permitting |
| 465 | redistribution under these terms (or, alternatively, under the terms of the | 465 | redistribution under these terms (or, alternatively, under the terms of the |
| 466 | ordinary General Public License). | 466 | ordinary General Public License). |
| 467 | 467 | ||
| 468 | To apply these terms, attach the following notices to the library. It is | 468 | To apply these terms, attach the following notices to the library. It is |
| 469 | safest to attach them to the start of each source file to most effectively | 469 | safest to attach them to the start of each source file to most effectively |
| 470 | convey the exclusion of warranty; and each file should have at least the | 470 | convey the exclusion of warranty; and each file should have at least the |
| 471 | "copyright" line and a pointer to where the full notice is found. | 471 | "copyright" line and a pointer to where the full notice is found. |
| 472 | 472 | ||
| 473 | <one line to give the library's name and a brief idea of what it does.> | 473 | <one line to give the library's name and a brief idea of what it does.> |
| 474 | Copyright (C) <year> <name of author> | 474 | Copyright (C) <year> <name of author> |
| 475 | 475 | ||
| 476 | This library is free software; you can redistribute it and/or | 476 | This library is free software; you can redistribute it and/or |
| 477 | modify it under the terms of the GNU Lesser General Public | 477 | modify it under the terms of the GNU Lesser General Public |
| 478 | License as published by the Free Software Foundation; either | 478 | License as published by the Free Software Foundation; either |
| 479 | version 2.1 of the License, or (at your option) any later version. | 479 | version 2.1 of the License, or (at your option) any later version. |
| 480 | 480 | ||
| 481 | This library is distributed in the hope that it will be useful, | 481 | This library is distributed in the hope that it will be useful, |
| 482 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 482 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 483 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 483 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 484 | Lesser General Public License for more details. | 484 | Lesser General Public License for more details. |
| 485 | 485 | ||
| 486 | You should have received a copy of the GNU Lesser General Public | 486 | You should have received a copy of the GNU Lesser General Public |
| 487 | License along with this library; if not, write to the Free Software | 487 | License along with this library; if not, write to the Free Software |
| 488 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 488 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 489 | 489 | ||
| 490 | Also add information on how to contact you by electronic and paper mail. | 490 | Also add information on how to contact you by electronic and paper mail. |
| 491 | 491 | ||
| 492 | You should also get your employer (if you work as a programmer) or your | 492 | You should also get your employer (if you work as a programmer) or your |
| 493 | school, if any, to sign a "copyright disclaimer" for the library, if | 493 | school, if any, to sign a "copyright disclaimer" for the library, if |
| 494 | necessary. Here is a sample; alter the names: | 494 | necessary. Here is a sample; alter the names: |
| 495 | 495 | ||
| 496 | Yoyodyne, Inc., hereby disclaims all copyright interest in the | 496 | Yoyodyne, Inc., hereby disclaims all copyright interest in the |
| 497 | library `Frob' (a library for tweaking knobs) written by James Random Hacker. | 497 | library `Frob' (a library for tweaking knobs) written by James Random Hacker. |
| 498 | 498 | ||
| 499 | <signature of Ty Coon>, 1 April 1990 | 499 | <signature of Ty Coon>, 1 April 1990 |
| 500 | Ty Coon, President of Vice | 500 | Ty Coon, President of Vice |
| 501 | 501 | ||
| 502 | That's all there is to it! | 502 | That's all there is to it! |
| 503 | 503 | ||
| 504 | 504 | ... | ... |
This diff could not be displayed because it is too large.
| 1 | // -------------------------------------------------------------------------------- | 1 | // -------------------------------------------------------------------------------- |
| 2 | // PclZip 2.8.2 - readme.txt | 2 | // PclZip 2.8.2 - readme.txt |
| 3 | // -------------------------------------------------------------------------------- | 3 | // -------------------------------------------------------------------------------- |
| 4 | // License GNU/LGPL - August 2009 | 4 | // License GNU/LGPL - August 2009 |
| 5 | // Vincent Blavet - vincent@phpconcept.net | 5 | // Vincent Blavet - vincent@phpconcept.net |
| 6 | // http://www.phpconcept.net | 6 | // http://www.phpconcept.net |
| 7 | // -------------------------------------------------------------------------------- | 7 | // -------------------------------------------------------------------------------- |
| 8 | // $Id: readme.txt,v 1.60 2009/09/30 20:35:21 vblavet Exp $ | 8 | // $Id: readme.txt,v 1.60 2009/09/30 20:35:21 vblavet Exp $ |
| 9 | // -------------------------------------------------------------------------------- | 9 | // -------------------------------------------------------------------------------- |
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | 12 | ||
| 13 | 0 - Sommaire | 13 | 0 - Sommaire |
| 14 | ============ | 14 | ============ |
| 15 | 1 - Introduction | 15 | 1 - Introduction |
| 16 | 2 - What's new | 16 | 2 - What's new |
| 17 | 3 - Corrected bugs | 17 | 3 - Corrected bugs |
| 18 | 4 - Known bugs or limitations | 18 | 4 - Known bugs or limitations |
| 19 | 5 - License | 19 | 5 - License |
| 20 | 6 - Warning | 20 | 6 - Warning |
| 21 | 7 - Documentation | 21 | 7 - Documentation |
| 22 | 8 - Author | 22 | 8 - Author |
| 23 | 9 - Contribute | 23 | 9 - Contribute |
| 24 | 24 | ||
| 25 | 1 - Introduction | 25 | 1 - Introduction |
| 26 | ================ | 26 | ================ |
| 27 | 27 | ||
| 28 | PclZip is a library that allow you to manage a Zip archive. | 28 | PclZip is a library that allow you to manage a Zip archive. |
| 29 | 29 | ||
| 30 | Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip | 30 | Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip |
| 31 | 31 | ||
| 32 | 2 - What's new | 32 | 2 - What's new |
| 33 | ============== | 33 | ============== |
| 34 | 34 | ||
| 35 | Version 2.8.2 : | 35 | Version 2.8.2 : |
| 36 | - PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with | 36 | - PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with |
| 37 | extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string | 37 | extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string |
| 38 | can also be modified in the post-extract call back. | 38 | can also be modified in the post-extract call back. |
| 39 | **Bugs correction : | 39 | **Bugs correction : |
| 40 | - PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly | 40 | - PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly |
| 41 | - Remove use of eval() and do direct call to callback functions | 41 | - Remove use of eval() and do direct call to callback functions |
| 42 | - Correct support of 64bits systems (Thanks to WordPress team) | 42 | - Correct support of 64bits systems (Thanks to WordPress team) |
| 43 | 43 | ||
| 44 | Version 2.8.1 : | 44 | Version 2.8.1 : |
| 45 | - Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is | 45 | - Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is |
| 46 | deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will | 46 | deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will |
| 47 | automatically replace it by PCLZIP_OPT_BY_PREG. | 47 | automatically replace it by PCLZIP_OPT_BY_PREG. |
| 48 | 48 | ||
| 49 | Version 2.8 : | 49 | Version 2.8 : |
| 50 | - Improve extraction of zip archive for large files by using temporary files | 50 | - Improve extraction of zip archive for large files by using temporary files |
| 51 | This feature is working like the one defined in r2.7. | 51 | This feature is working like the one defined in r2.7. |
| 52 | Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF, | 52 | Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF, |
| 53 | PCLZIP_OPT_TEMP_FILE_THRESHOLD | 53 | PCLZIP_OPT_TEMP_FILE_THRESHOLD |
| 54 | - Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto | 54 | - Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto |
| 55 | sense of temporary file use. | 55 | sense of temporary file use. |
| 56 | - Bug correction : Reduce filepath in returned file list to remove ennoying | 56 | - Bug correction : Reduce filepath in returned file list to remove ennoying |
| 57 | './/' preambule in file path. | 57 | './/' preambule in file path. |
| 58 | 58 | ||
| 59 | Version 2.7 : | 59 | Version 2.7 : |
| 60 | - Improve creation of zip archive for large files : | 60 | - Improve creation of zip archive for large files : |
| 61 | PclZip will now autosense the configured memory and use temporary files | 61 | PclZip will now autosense the configured memory and use temporary files |
| 62 | when large file is suspected. | 62 | when large file is suspected. |
| 63 | This feature can also ne triggered by manual options in create() and add() | 63 | This feature can also ne triggered by manual options in create() and add() |
| 64 | methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files, | 64 | methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files, |
| 65 | 'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic, | 65 | 'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic, |
| 66 | 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size | 66 | 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size |
| 67 | threshold to use temporary files. | 67 | threshold to use temporary files. |
| 68 | Using "temporary files" rather than "memory" might take more time, but | 68 | Using "temporary files" rather than "memory" might take more time, but |
| 69 | might give the ability to zip very large files : | 69 | might give the ability to zip very large files : |
| 70 | Tested on my win laptop with a 88Mo file : | 70 | Tested on my win laptop with a 88Mo file : |
| 71 | Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo) | 71 | Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo) |
| 72 | Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo) | 72 | Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo) |
| 73 | - Replace use of mktime() by time() to limit the E_STRICT error messages. | 73 | - Replace use of mktime() by time() to limit the E_STRICT error messages. |
| 74 | - Bug correction : When adding files with full windows path (drive letter) | 74 | - Bug correction : When adding files with full windows path (drive letter) |
| 75 | PclZip is now working. Before, if the drive letter is not the default | 75 | PclZip is now working. Before, if the drive letter is not the default |
| 76 | path, PclZip was not able to add the file. | 76 | path, PclZip was not able to add the file. |
| 77 | 77 | ||
| 78 | Version 2.6 : | 78 | Version 2.6 : |
| 79 | - Code optimisation | 79 | - Code optimisation |
| 80 | - New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to | 80 | - New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to |
| 81 | add a comment for a specific file. (Don't really know if this is usefull) | 81 | add a comment for a specific file. (Don't really know if this is usefull) |
| 82 | - New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string | 82 | - New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string |
| 83 | as a file. | 83 | as a file. |
| 84 | - New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with | 84 | - New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with |
| 85 | a file. | 85 | a file. |
| 86 | - Correct a bug. Files archived with a timestamp with 0h0m0s were extracted | 86 | - Correct a bug. Files archived with a timestamp with 0h0m0s were extracted |
| 87 | with current time | 87 | with current time |
| 88 | - Add CRC value in the informations returned back for each file after an | 88 | - Add CRC value in the informations returned back for each file after an |
| 89 | action. | 89 | action. |
| 90 | - Add missing closedir() statement. | 90 | - Add missing closedir() statement. |
| 91 | - When adding a folder, and removing the path of this folder, files were | 91 | - When adding a folder, and removing the path of this folder, files were |
| 92 | incorrectly added with a '/' at the beginning. Which means files are | 92 | incorrectly added with a '/' at the beginning. Which means files are |
| 93 | related to root in unix systems. Corrected. | 93 | related to root in unix systems. Corrected. |
| 94 | - Add conditional if before constant definition. This will allow users | 94 | - Add conditional if before constant definition. This will allow users |
| 95 | to redefine constants without changing the file, and then improve | 95 | to redefine constants without changing the file, and then improve |
| 96 | upgrade of pclzip code for new versions. | 96 | upgrade of pclzip code for new versions. |
| 97 | 97 | ||
| 98 | Version 2.5 : | 98 | Version 2.5 : |
| 99 | - Introduce the ability to add file/folder with individual properties (file descriptor). | 99 | - Introduce the ability to add file/folder with individual properties (file descriptor). |
| 100 | This gives for example the ability to change the filename of a zipped file. | 100 | This gives for example the ability to change the filename of a zipped file. |
| 101 | . Able to add files individually | 101 | . Able to add files individually |
| 102 | . Able to change full name | 102 | . Able to change full name |
| 103 | . Able to change short name | 103 | . Able to change short name |
| 104 | . Compatible with global options | 104 | . Compatible with global options |
| 105 | - New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME | 105 | - New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME |
| 106 | - New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE | 106 | - New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE |
| 107 | - Add a security control feature. PclZip can extract any file in any folder | 107 | - Add a security control feature. PclZip can extract any file in any folder |
| 108 | of a system. People may use this to upload a zip file and try to override | 108 | of a system. People may use this to upload a zip file and try to override |
| 109 | a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the | 109 | a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the |
| 110 | ability to forgive any directory transversal behavior. | 110 | ability to forgive any directory transversal behavior. |
| 111 | - New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path | 111 | - New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path |
| 112 | - New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION | 112 | - New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION |
| 113 | - Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend | 113 | - Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend |
| 114 | by current path (getcwd()) | 114 | by current path (getcwd()) |
| 115 | 115 | ||
| 116 | Version 2.4 : | 116 | Version 2.4 : |
| 117 | - Code improvment : try to speed up the code by removing unusefull call to pack() | 117 | - Code improvment : try to speed up the code by removing unusefull call to pack() |
| 118 | - Correct bug in delete() : delete() should be called with no argument. This was not | 118 | - Correct bug in delete() : delete() should be called with no argument. This was not |
| 119 | the case in 2.3. This is corrected in 2.4. | 119 | the case in 2.3. This is corrected in 2.4. |
| 120 | - Correct a bug in path_inclusion function. When the path has several '../../', the | 120 | - Correct a bug in path_inclusion function. When the path has several '../../', the |
| 121 | result was bad. | 121 | result was bad. |
| 122 | - Add a check for magic_quotes_runtime configuration. If enabled, PclZip will | 122 | - Add a check for magic_quotes_runtime configuration. If enabled, PclZip will |
| 123 | disable it while working and det it back to its original value. | 123 | disable it while working and det it back to its original value. |
| 124 | This resolve a lots of bad formated archive errors. | 124 | This resolve a lots of bad formated archive errors. |
| 125 | - Bug correction : PclZip now correctly unzip file in some specific situation, | 125 | - Bug correction : PclZip now correctly unzip file in some specific situation, |
| 126 | when compressed content has same size as uncompressed content. | 126 | when compressed content has same size as uncompressed content. |
| 127 | - Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH', | 127 | - Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH', |
| 128 | directories are not any more created. | 128 | directories are not any more created. |
| 129 | - Code improvment : correct unclosed opendir(), better handling of . and .. in | 129 | - Code improvment : correct unclosed opendir(), better handling of . and .. in |
| 130 | loops. | 130 | loops. |
| 131 | 131 | ||
| 132 | 132 | ||
| 133 | Version 2.3 : | 133 | Version 2.3 : |
| 134 | - Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not | 134 | - Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not |
| 135 | give the same result in PHP4 and PHP5 .... | 135 | give the same result in PHP4 and PHP5 .... |
| 136 | 136 | ||
| 137 | Version 2.2 : | 137 | Version 2.2 : |
| 138 | - Try development of PCLZIP_OPT_CRYPT ..... | 138 | - Try development of PCLZIP_OPT_CRYPT ..... |
| 139 | However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers, | 139 | However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers, |
| 140 | the result (greater than a long) is not supported by PHP. Even the use of bcmath | 140 | the result (greater than a long) is not supported by PHP. Even the use of bcmath |
| 141 | functions does not help. I did not find yet a solution ...; | 141 | functions does not help. I did not find yet a solution ...; |
| 142 | - Add missing '/' at end of directory entries | 142 | - Add missing '/' at end of directory entries |
| 143 | - Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or | 143 | - Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or |
| 144 | error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION. | 144 | error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION. |
| 145 | - Corrected : Bad "version need to extract" field in local file header | 145 | - Corrected : Bad "version need to extract" field in local file header |
| 146 | - Add private method privCheckFileHeaders() in order to check local and central | 146 | - Add private method privCheckFileHeaders() in order to check local and central |
| 147 | file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives | 147 | file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives |
| 148 | the ability to have a local file header without size, compressed size and crc filled. | 148 | the ability to have a local file header without size, compressed size and crc filled. |
| 149 | - Add a generic status 'error' for file status | 149 | - Add a generic status 'error' for file status |
| 150 | - Add control of compression type. PclZip only support deflate compression method. | 150 | - Add control of compression type. PclZip only support deflate compression method. |
| 151 | Before v2.2, PclZip does not check the compression method used in an archive while | 151 | Before v2.2, PclZip does not check the compression method used in an archive while |
| 152 | extracting. With v2.2 PclZip returns a new error status for a file using an unsupported | 152 | extracting. With v2.2 PclZip returns a new error status for a file using an unsupported |
| 153 | compression method. New status is "unsupported_compression". New error code is | 153 | compression method. New status is "unsupported_compression". New error code is |
| 154 | PCLZIP_ERR_UNSUPPORTED_COMPRESSION. | 154 | PCLZIP_ERR_UNSUPPORTED_COMPRESSION. |
| 155 | - Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files | 155 | - Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files |
| 156 | when errors like 'a folder with same name exists' or 'a newer file exists' or | 156 | when errors like 'a folder with same name exists' or 'a newer file exists' or |
| 157 | 'a write protected file' exists, rather than set a status for the concerning file | 157 | 'a write protected file' exists, rather than set a status for the concerning file |
| 158 | and resume the extract of the zip. | 158 | and resume the extract of the zip. |
| 159 | - Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the | 159 | - Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the |
| 160 | replacement of the file, even if a newer version of the file exists. | 160 | replacement of the file, even if a newer version of the file exists. |
| 161 | Note that today if a file with the same name already exists but is older it will be | 161 | Note that today if a file with the same name already exists but is older it will be |
| 162 | replaced by the extracted one. | 162 | replaced by the extracted one. |
| 163 | - Improve PclZipUtilOption() | 163 | - Improve PclZipUtilOption() |
| 164 | - Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central | 164 | - Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central |
| 165 | directory structure is the last data in the archive. Crypt encryption/decryption of | 165 | directory structure is the last data in the archive. Crypt encryption/decryption of |
| 166 | zip archive put trailing 0 bytes after decryption. PclZip is now supporting this. | 166 | zip archive put trailing 0 bytes after decryption. PclZip is now supporting this. |
| 167 | 167 | ||
| 168 | Version 2.1 : | 168 | Version 2.1 : |
| 169 | - Add the ability to abort the extraction by using a user callback function. | 169 | - Add the ability to abort the extraction by using a user callback function. |
| 170 | The user can now return the value '2' in its callback which indicates to stop the | 170 | The user can now return the value '2' in its callback which indicates to stop the |
| 171 | extraction. For a pre call-back extract is stopped before the extration of the current | 171 | extraction. For a pre call-back extract is stopped before the extration of the current |
| 172 | file. For a post call back, the extraction is stopped after. | 172 | file. For a post call back, the extraction is stopped after. |
| 173 | - Add the ability to extract a file (or several files) directly in the standard output. | 173 | - Add the ability to extract a file (or several files) directly in the standard output. |
| 174 | This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract(). | 174 | This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract(). |
| 175 | - Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT, | 175 | - Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT, |
| 176 | PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments | 176 | PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments |
| 177 | in the zip archive. | 177 | in the zip archive. |
| 178 | - When merging two archives, the comments are not any more lost, but merged, with a | 178 | - When merging two archives, the comments are not any more lost, but merged, with a |
| 179 | blank space separator. | 179 | blank space separator. |
| 180 | - Corrected bug : Files are not deleted when all files are asked to be deleted. | 180 | - Corrected bug : Files are not deleted when all files are asked to be deleted. |
| 181 | - Corrected bug : Folders with name '0' made PclZip to abort the create or add feature. | 181 | - Corrected bug : Folders with name '0' made PclZip to abort the create or add feature. |
| 182 | 182 | ||
| 183 | 183 | ||
| 184 | Version 2.0 : | 184 | Version 2.0 : |
| 185 | ***** Warning : Some new features may break the backward compatibility for your scripts. | 185 | ***** Warning : Some new features may break the backward compatibility for your scripts. |
| 186 | Please carefully read the readme file. | 186 | Please carefully read the readme file. |
| 187 | - Add the ability to delete by Index, name and regular expression. This feature is | 187 | - Add the ability to delete by Index, name and regular expression. This feature is |
| 188 | performed by the method delete(), which uses the optional parameters | 188 | performed by the method delete(), which uses the optional parameters |
| 189 | PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG. | 189 | PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG. |
| 190 | - Add the ability to extract by regular expression. To extract by regexp you must use the method | 190 | - Add the ability to extract by regular expression. To extract by regexp you must use the method |
| 191 | extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG | 191 | extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG |
| 192 | (depending if you want to use ereg() or preg_match() syntax) followed by the | 192 | (depending if you want to use ereg() or preg_match() syntax) followed by the |
| 193 | regular expression pattern. | 193 | regular expression pattern. |
| 194 | - Add the ability to extract by index, directly with the extract() method. This is a | 194 | - Add the ability to extract by index, directly with the extract() method. This is a |
| 195 | code improvment of the extractByIndex() method. | 195 | code improvment of the extractByIndex() method. |
| 196 | - Add the ability to extract by name. To extract by name you must use the method | 196 | - Add the ability to extract by name. To extract by name you must use the method |
| 197 | extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to | 197 | extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to |
| 198 | extract or an array of filenames to extract. To extract all a folder, use the folder | 198 | extract or an array of filenames to extract. To extract all a folder, use the folder |
| 199 | name rather than the filename with a '/' at the end. | 199 | name rather than the filename with a '/' at the end. |
| 200 | - Add the ability to add files without compression. This is done with a new attribute | 200 | - Add the ability to add files without compression. This is done with a new attribute |
| 201 | which is PCLZIP_OPT_NO_COMPRESSION. | 201 | which is PCLZIP_OPT_NO_COMPRESSION. |
| 202 | - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly | 202 | - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly |
| 203 | in a string without using any file (or temporary file). | 203 | in a string without using any file (or temporary file). |
| 204 | - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string. | 204 | - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string. |
| 205 | The default separator is now a comma (,) and not any more a blank space. | 205 | The default separator is now a comma (,) and not any more a blank space. |
| 206 | THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with | 206 | THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with |
| 207 | your script. | 207 | your script. |
| 208 | - Improve algorythm performance by removing the use of temporary files when adding or | 208 | - Improve algorythm performance by removing the use of temporary files when adding or |
| 209 | extracting files in an archive. | 209 | extracting files in an archive. |
| 210 | - Add (correct) detection of empty filename zipping. This can occurs when the removed | 210 | - Add (correct) detection of empty filename zipping. This can occurs when the removed |
| 211 | path is the same | 211 | path is the same |
| 212 | as a zipped dir. The dir is not zipped (['status'] = filtered), only its content. | 212 | as a zipped dir. The dir is not zipped (['status'] = filtered), only its content. |
| 213 | - Add better support for windows paths (thanks for help from manus@manusfreedom.com). | 213 | - Add better support for windows paths (thanks for help from manus@manusfreedom.com). |
| 214 | - Corrected bug : When the archive file already exists with size=0, the add() method | 214 | - Corrected bug : When the archive file already exists with size=0, the add() method |
| 215 | fails. Corrected in 2.0. | 215 | fails. Corrected in 2.0. |
| 216 | - Remove the use of OS_WINDOWS constant. Use php_uname() function rather. | 216 | - Remove the use of OS_WINDOWS constant. Use php_uname() function rather. |
| 217 | - Control the order of index ranges in extract by index feature. | 217 | - Control the order of index ranges in extract by index feature. |
| 218 | - Change the internal management of folders (better handling of internal flag). | 218 | - Change the internal management of folders (better handling of internal flag). |
| 219 | 219 | ||
| 220 | 220 | ||
| 221 | Version 1.3 : | 221 | Version 1.3 : |
| 222 | - Removing the double include check. This is now done by include_once() and require_once() | 222 | - Removing the double include check. This is now done by include_once() and require_once() |
| 223 | PHP directives. | 223 | PHP directives. |
| 224 | - Changing the error handling mecanism : Remove the use of an external error library. | 224 | - Changing the error handling mecanism : Remove the use of an external error library. |
| 225 | The former PclError...() functions are replaced by internal equivalent methods. | 225 | The former PclError...() functions are replaced by internal equivalent methods. |
| 226 | By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library. | 226 | By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library. |
| 227 | Introducing the use of constants for error codes rather than integer values. This will help | 227 | Introducing the use of constants for error codes rather than integer values. This will help |
| 228 | in futur improvment. | 228 | in futur improvment. |
| 229 | Introduction of error handling functions like errorCode(), errorName() and errorInfo(). | 229 | Introduction of error handling functions like errorCode(), errorName() and errorInfo(). |
| 230 | - Remove the deprecated use of calling function with arguments passed by reference. | 230 | - Remove the deprecated use of calling function with arguments passed by reference. |
| 231 | - Add the calling of extract(), extractByIndex(), create() and add() functions | 231 | - Add the calling of extract(), extractByIndex(), create() and add() functions |
| 232 | with variable options rather than fixed arguments. | 232 | with variable options rather than fixed arguments. |
| 233 | - Add the ability to remove all the file path while extracting or adding, | 233 | - Add the ability to remove all the file path while extracting or adding, |
| 234 | without any need to specify the path to remove. | 234 | without any need to specify the path to remove. |
| 235 | This is available for extract(), extractByIndex(), create() and add() functionS by using | 235 | This is available for extract(), extractByIndex(), create() and add() functionS by using |
| 236 | the new variable options parameters : | 236 | the new variable options parameters : |
| 237 | - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct. | 237 | - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct. |
| 238 | - Ability to change the mode of a file after the extraction (chmod()). | 238 | - Ability to change the mode of a file after the extraction (chmod()). |
| 239 | This is available for extract() and extractByIndex() functionS by using | 239 | This is available for extract() and extractByIndex() functionS by using |
| 240 | the new variable options parameters. | 240 | the new variable options parameters. |
| 241 | - PCLZIP_OPT_SET_CHMOD : by setting the value of this option. | 241 | - PCLZIP_OPT_SET_CHMOD : by setting the value of this option. |
| 242 | - Ability to definition call-back options. These call-back will be called during the adding, | 242 | - Ability to definition call-back options. These call-back will be called during the adding, |
| 243 | or the extracting of file (extract(), extractByIndex(), create() and add() functions) : | 243 | or the extracting of file (extract(), extractByIndex(), create() and add() functions) : |
| 244 | - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user | 244 | - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user |
| 245 | can trigerred the change the filename of the extracted file. The user can triggered the | 245 | can trigerred the change the filename of the extracted file. The user can triggered the |
| 246 | skip of the extraction. This is adding a 'skipped' status in the file list result value. | 246 | skip of the extraction. This is adding a 'skipped' status in the file list result value. |
| 247 | - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file. | 247 | - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file. |
| 248 | Nothing can be triggered from that point. | 248 | Nothing can be triggered from that point. |
| 249 | - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user | 249 | - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user |
| 250 | can trigerred the change the stored filename of the added file. The user can triggered the | 250 | can trigerred the change the stored filename of the added file. The user can triggered the |
| 251 | skip of the add. This is adding a 'skipped' status in the file list result value. | 251 | skip of the add. This is adding a 'skipped' status in the file list result value. |
| 252 | - PCLZIP_CB_POST_ADD : will be called after each add of a file. | 252 | - PCLZIP_CB_POST_ADD : will be called after each add of a file. |
| 253 | Nothing can be triggered from that point. | 253 | Nothing can be triggered from that point. |
| 254 | - Two status are added in the file list returned as function result : skipped & filename_too_long | 254 | - Two status are added in the file list returned as function result : skipped & filename_too_long |
| 255 | 'skipped' is used when a call-back function ask for skipping the file. | 255 | 'skipped' is used when a call-back function ask for skipping the file. |
| 256 | 'filename_too_long' is used while adding a file with a too long filename to archive (the file is | 256 | 'filename_too_long' is used while adding a file with a too long filename to archive (the file is |
| 257 | not added) | 257 | not added) |
| 258 | - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into | 258 | - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into |
| 259 | a directory. | 259 | a directory. |
| 260 | - Add a check of the presence of the archive file before some actions (like list, ...) | 260 | - Add a check of the presence of the archive file before some actions (like list, ...) |
| 261 | - Add the initialisation of field "index" in header array. This means that by | 261 | - Add the initialisation of field "index" in header array. This means that by |
| 262 | default index will be -1 when not explicitly set by the methods. | 262 | default index will be -1 when not explicitly set by the methods. |
| 263 | 263 | ||
| 264 | Version 1.2 : | 264 | Version 1.2 : |
| 265 | - Adding a duplicate function. | 265 | - Adding a duplicate function. |
| 266 | - Adding a merge function. The merge function is a "quick merge" function, | 266 | - Adding a merge function. The merge function is a "quick merge" function, |
| 267 | it just append the content of an archive at the end of the first one. There | 267 | it just append the content of an archive at the end of the first one. There |
| 268 | is no check for duplicate files or more recent files. | 268 | is no check for duplicate files or more recent files. |
| 269 | - Improve the search of the central directory end. | 269 | - Improve the search of the central directory end. |
| 270 | 270 | ||
| 271 | Version 1.1.2 : | 271 | Version 1.1.2 : |
| 272 | 272 | ||
| 273 | - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license | 273 | - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license |
| 274 | (see License section). | 274 | (see License section). |
| 275 | - Adding the optional support of a static temporary directory. You will need to configure | 275 | - Adding the optional support of a static temporary directory. You will need to configure |
| 276 | the constant PCLZIP_TEMPORARY_DIR if you want to use this feature. | 276 | the constant PCLZIP_TEMPORARY_DIR if you want to use this feature. |
| 277 | - Improving the rename() function. In some cases rename() does not work (different | 277 | - Improving the rename() function. In some cases rename() does not work (different |
| 278 | Filesystems), so it will be replaced by a copy() + unlink() functions. | 278 | Filesystems), so it will be replaced by a copy() + unlink() functions. |
| 279 | 279 | ||
| 280 | Version 1.1.1 : | 280 | Version 1.1.1 : |
| 281 | 281 | ||
| 282 | - Maintenance release, no new feature. | 282 | - Maintenance release, no new feature. |
| 283 | 283 | ||
| 284 | Version 1.1 : | 284 | Version 1.1 : |
| 285 | 285 | ||
| 286 | - New method Add() : adding files in the archive | 286 | - New method Add() : adding files in the archive |
| 287 | - New method ExtractByIndex() : partial extract of the archive, files are identified by | 287 | - New method ExtractByIndex() : partial extract of the archive, files are identified by |
| 288 | their index in the archive | 288 | their index in the archive |
| 289 | - New method DeleteByIndex() : delete some files/folder entries from the archive, | 289 | - New method DeleteByIndex() : delete some files/folder entries from the archive, |
| 290 | files are identified by their index in the archive. | 290 | files are identified by their index in the archive. |
| 291 | - Adding a test of the zlib extension presence. If not present abort the script. | 291 | - Adding a test of the zlib extension presence. If not present abort the script. |
| 292 | 292 | ||
| 293 | Version 1.0.1 : | 293 | Version 1.0.1 : |
| 294 | 294 | ||
| 295 | - No new feature | 295 | - No new feature |
| 296 | 296 | ||
| 297 | 297 | ||
| 298 | 3 - Corrected bugs | 298 | 3 - Corrected bugs |
| 299 | ================== | 299 | ================== |
| 300 | 300 | ||
| 301 | Corrected in Version 2.0 : | 301 | Corrected in Version 2.0 : |
| 302 | - Corrected : During an extraction, if a call-back fucntion is used and try to skip | 302 | - Corrected : During an extraction, if a call-back fucntion is used and try to skip |
| 303 | a file, all the extraction process is stopped. | 303 | a file, all the extraction process is stopped. |
| 304 | 304 | ||
| 305 | Corrected in Version 1.3 : | 305 | Corrected in Version 1.3 : |
| 306 | - Corrected : Support of static synopsis for method extract() is broken. | 306 | - Corrected : Support of static synopsis for method extract() is broken. |
| 307 | - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF). | 307 | - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF). |
| 308 | - Corrected : When an extract is done with a remove_path parameter, the entry for | 308 | - Corrected : When an extract is done with a remove_path parameter, the entry for |
| 309 | the directory with exactly the same path is not skipped/filtered. | 309 | the directory with exactly the same path is not skipped/filtered. |
| 310 | - Corrected : extractByIndex() and deleteByIndex() were not managing index in the | 310 | - Corrected : extractByIndex() and deleteByIndex() were not managing index in the |
| 311 | right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This | 311 | right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This |
| 312 | is due to a sort of the index resulting table that puts 11 before 3-5 (sort on | 312 | is due to a sort of the index resulting table that puts 11 before 3-5 (sort on |
| 313 | string and not interger). The sort is temporarilly removed, this means that | 313 | string and not interger). The sort is temporarilly removed, this means that |
| 314 | you must provide a sorted list of index ranges. | 314 | you must provide a sorted list of index ranges. |
| 315 | 315 | ||
| 316 | Corrected in Version 1.2 : | 316 | Corrected in Version 1.2 : |
| 317 | 317 | ||
| 318 | - Nothing. | 318 | - Nothing. |
| 319 | 319 | ||
| 320 | Corrected in Version 1.1.2 : | 320 | Corrected in Version 1.1.2 : |
| 321 | 321 | ||
| 322 | - Corrected : Winzip is unable to delete or add new files in a PclZip created archives. | 322 | - Corrected : Winzip is unable to delete or add new files in a PclZip created archives. |
| 323 | 323 | ||
| 324 | Corrected in Version 1.1.1 : | 324 | Corrected in Version 1.1.1 : |
| 325 | 325 | ||
| 326 | - Corrected : When archived file is not compressed (0% compression), the | 326 | - Corrected : When archived file is not compressed (0% compression), the |
| 327 | extract method fails. | 327 | extract method fails. |
| 328 | 328 | ||
| 329 | Corrected in Version 1.1 : | 329 | Corrected in Version 1.1 : |
| 330 | 330 | ||
| 331 | - Corrected : Adding a complete tree of folder may result in a bad archive | 331 | - Corrected : Adding a complete tree of folder may result in a bad archive |
| 332 | creation. | 332 | creation. |
| 333 | 333 | ||
| 334 | Corrected in Version 1.0.1 : | 334 | Corrected in Version 1.0.1 : |
| 335 | 335 | ||
| 336 | - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). | 336 | - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). |
| 337 | 337 | ||
| 338 | 338 | ||
| 339 | 4 - Known bugs or limitations | 339 | 4 - Known bugs or limitations |
| 340 | ============================= | 340 | ============================= |
| 341 | 341 | ||
| 342 | Please publish bugs reports in SourceForge : | 342 | Please publish bugs reports in SourceForge : |
| 343 | http://sourceforge.net/tracker/?group_id=40254&atid=427564 | 343 | http://sourceforge.net/tracker/?group_id=40254&atid=427564 |
| 344 | 344 | ||
| 345 | In Version 2.x : | 345 | In Version 2.x : |
| 346 | - PclZip does only support file uncompressed or compressed with deflate (compression method 8) | 346 | - PclZip does only support file uncompressed or compressed with deflate (compression method 8) |
| 347 | - PclZip does not support password protected zip archive | 347 | - PclZip does not support password protected zip archive |
| 348 | - Some concern were seen when changing mtime of a file while archiving. | 348 | - Some concern were seen when changing mtime of a file while archiving. |
| 349 | Seems to be linked to Daylight Saving Time (PclTest_changing_mtime). | 349 | Seems to be linked to Daylight Saving Time (PclTest_changing_mtime). |
| 350 | 350 | ||
| 351 | In Version 1.2 : | 351 | In Version 1.2 : |
| 352 | 352 | ||
| 353 | - merge() methods does not check for duplicate files or last date of modifications. | 353 | - merge() methods does not check for duplicate files or last date of modifications. |
| 354 | 354 | ||
| 355 | In Version 1.1 : | 355 | In Version 1.1 : |
| 356 | 356 | ||
| 357 | - Limitation : Using 'extract' fields in the file header in the zip archive is not supported. | 357 | - Limitation : Using 'extract' fields in the file header in the zip archive is not supported. |
| 358 | - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to | 358 | - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to |
| 359 | add a file in a PclZip created archive. (Corrected in v.1.2) | 359 | add a file in a PclZip created archive. (Corrected in v.1.2) |
| 360 | 360 | ||
| 361 | In Version 1.0.1 : | 361 | In Version 1.0.1 : |
| 362 | 362 | ||
| 363 | - Adding a complete tree of folder may result in a bad archive | 363 | - Adding a complete tree of folder may result in a bad archive |
| 364 | creation. (Corrected in V.1.1). | 364 | creation. (Corrected in V.1.1). |
| 365 | - Path given to methods must be in the unix format (/) and not the Windows format (\). | 365 | - Path given to methods must be in the unix format (/) and not the Windows format (\). |
| 366 | Workaround : Use only / directory separators. | 366 | Workaround : Use only / directory separators. |
| 367 | - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz | 367 | - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz |
| 368 | added suffix. Files with these names may already exist and may be overwritten. | 368 | added suffix. Files with these names may already exist and may be overwritten. |
| 369 | Workaround : none. | 369 | Workaround : none. |
| 370 | - PclZip does not check if the zlib extension is present. If it is absent, the zip | 370 | - PclZip does not check if the zlib extension is present. If it is absent, the zip |
| 371 | file is not created and the lib abort without warning. | 371 | file is not created and the lib abort without warning. |
| 372 | Workaround : enable the zlib extension on the php install | 372 | Workaround : enable the zlib extension on the php install |
| 373 | 373 | ||
| 374 | In Version 1.0 : | 374 | In Version 1.0 : |
| 375 | 375 | ||
| 376 | - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). | 376 | - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). |
| 377 | (Corrected in v.1.0.1) | 377 | (Corrected in v.1.0.1) |
| 378 | - Limitation : Multi-disk zip archive are not supported. | 378 | - Limitation : Multi-disk zip archive are not supported. |
| 379 | 379 | ||
| 380 | 380 | ||
| 381 | 5 - License | 381 | 5 - License |
| 382 | =========== | 382 | =========== |
| 383 | 383 | ||
| 384 | Since version 1.1.2, PclZip Library is released under GNU/LGPL license. | 384 | Since version 1.1.2, PclZip Library is released under GNU/LGPL license. |
| 385 | This library is free, so you can use it at no cost. | 385 | This library is free, so you can use it at no cost. |
| 386 | 386 | ||
| 387 | HOWEVER, if you release a script, an application, a library or any kind of | 387 | HOWEVER, if you release a script, an application, a library or any kind of |
| 388 | code using PclZip library (or a part of it), YOU MUST : | 388 | code using PclZip library (or a part of it), YOU MUST : |
| 389 | - Indicate in the documentation (or a readme file), that your work | 389 | - Indicate in the documentation (or a readme file), that your work |
| 390 | uses PclZip Library, and make a reference to the author and the web site | 390 | uses PclZip Library, and make a reference to the author and the web site |
| 391 | http://www.phpconcept.net | 391 | http://www.phpconcept.net |
| 392 | - Gives the ability to the final user to update the PclZip libary. | 392 | - Gives the ability to the final user to update the PclZip libary. |
| 393 | 393 | ||
| 394 | I will also appreciate that you send me a mail (vincent@phpconcept.net), just to | 394 | I will also appreciate that you send me a mail (vincent@phpconcept.net), just to |
| 395 | be aware that someone is using PclZip. | 395 | be aware that someone is using PclZip. |
| 396 | 396 | ||
| 397 | For more information about GNU/LGPL license : http://www.gnu.org | 397 | For more information about GNU/LGPL license : http://www.gnu.org |
| 398 | 398 | ||
| 399 | 6 - Warning | 399 | 6 - Warning |
| 400 | ================= | 400 | ================= |
| 401 | 401 | ||
| 402 | This library and the associated files are non commercial, non professional work. | 402 | This library and the associated files are non commercial, non professional work. |
| 403 | It should not have unexpected results. However if any damage is caused by this software | 403 | It should not have unexpected results. However if any damage is caused by this software |
| 404 | the author can not be responsible. | 404 | the author can not be responsible. |
| 405 | The use of this software is at the risk of the user. | 405 | The use of this software is at the risk of the user. |
| 406 | 406 | ||
| 407 | 7 - Documentation | 407 | 7 - Documentation |
| 408 | ================= | 408 | ================= |
| 409 | PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php | 409 | PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php |
| 410 | A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/ | 410 | A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/ |
| 411 | 411 | ||
| 412 | 8 - Author | 412 | 8 - Author |
| 413 | ========== | 413 | ========== |
| 414 | 414 | ||
| 415 | This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time. | 415 | This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time. |
| 416 | 416 | ||
| 417 | 9 - Contribute | 417 | 9 - Contribute |
| 418 | ============== | 418 | ============== |
| 419 | If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net. | 419 | If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net. |
| 420 | If you can help in financing PhpConcept hosting service, please go to | 420 | If you can help in financing PhpConcept hosting service, please go to |
| 421 | http://www.phpconcept.net/soutien.php | 421 | http://www.phpconcept.net/soutien.php | ... | ... |
| 1 | Sentences that contain all letters commonly used in a language | 1 | Sentences that contain all letters commonly used in a language |
| 2 | -------------------------------------------------------------- | 2 | -------------------------------------------------------------- |
| 3 | 3 | ||
| 4 | Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2001-09-02 | 4 | Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2001-09-02 |
| 5 | 5 | ||
| 6 | This file is UTF-8 encoded. | 6 | This file is UTF-8 encoded. |
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | Danish (da) | 9 | Danish (da) |
| 10 | --------- | 10 | --------- |
| 11 | 11 | ||
| 12 | Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen | 12 | Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen |
| 13 | Wolther spillede på xylofon. | 13 | Wolther spillede på xylofon. |
| 14 | (= Quiz contestants were eating strawbery with cream while Wolther | 14 | (= Quiz contestants were eating strawbery with cream while Wolther |
| 15 | the circus clown played on xylophone.) | 15 | the circus clown played on xylophone.) |
| 16 | 16 | ||
| 17 | German (de) | 17 | German (de) |
| 18 | ----------- | 18 | ----------- |
| 19 | 19 | ||
| 20 | Falsches Üben von Xylophonmusik quält jeden größeren Zwerg | 20 | Falsches Üben von Xylophonmusik quält jeden größeren Zwerg |
| 21 | (= Wrongful practicing of xylophone music tortures every larger dwarf) | 21 | (= Wrongful practicing of xylophone music tortures every larger dwarf) |
| 22 | 22 | ||
| 23 | Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich | 23 | Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich |
| 24 | (= Twelve boxing fighters hunted Eva across the dike of Sylt) | 24 | (= Twelve boxing fighters hunted Eva across the dike of Sylt) |
| 25 | 25 | ||
| 26 | Heizölrückstoßabdämpfung | 26 | Heizölrückstoßabdämpfung |
| 27 | (= fuel oil recoil absorber) | 27 | (= fuel oil recoil absorber) |
| 28 | (jqvwxy missing, but all non-ASCII letters in one word) | 28 | (jqvwxy missing, but all non-ASCII letters in one word) |
| 29 | 29 | ||
| 30 | English (en) | 30 | English (en) |
| 31 | ------------ | 31 | ------------ |
| 32 | 32 | ||
| 33 | The quick brown fox jumps over the lazy dog | 33 | The quick brown fox jumps over the lazy dog |
| 34 | 34 | ||
| 35 | Spanish (es) | 35 | Spanish (es) |
| 36 | ------------ | 36 | ------------ |
| 37 | 37 | ||
| 38 | El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y | 38 | El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y |
| 39 | frío, añoraba a su querido cachorro. | 39 | frío, añoraba a su querido cachorro. |
| 40 | (Contains every letter and every accent, but not every combination | 40 | (Contains every letter and every accent, but not every combination |
| 41 | of vowel + acute.) | 41 | of vowel + acute.) |
| 42 | 42 | ||
| 43 | French (fr) | 43 | French (fr) |
| 44 | ----------- | 44 | ----------- |
| 45 | 45 | ||
| 46 | Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à | 46 | Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à |
| 47 | côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce | 47 | côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce |
| 48 | qui lui permet de penser à la cænogenèse de l'être dont il est question | 48 | qui lui permet de penser à la cænogenèse de l'être dont il est question |
| 49 | dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui, | 49 | dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui, |
| 50 | pense-t-il, diminue çà et là la qualité de son œuvre. | 50 | pense-t-il, diminue çà et là la qualité de son œuvre. |
| 51 | 51 | ||
| 52 | l'île exiguë | 52 | l'île exiguë |
| 53 | Où l'obèse jury mûr | 53 | Où l'obèse jury mûr |
| 54 | Fête l'haï volapük, | 54 | Fête l'haï volapük, |
| 55 | Âne ex aéquo au whist, | 55 | Âne ex aéquo au whist, |
| 56 | Ôtez ce vœu déçu. | 56 | Ôtez ce vœu déçu. |
| 57 | 57 | ||
| 58 | Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en | 58 | Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en |
| 59 | canoë au delà des îles, près du mälström où brûlent les novæ. | 59 | canoë au delà des îles, près du mälström où brûlent les novæ. |
| 60 | 60 | ||
| 61 | Irish Gaelic (ga) | 61 | Irish Gaelic (ga) |
| 62 | ----------------- | 62 | ----------------- |
| 63 | 63 | ||
| 64 | D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh | 64 | D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh |
| 65 | 65 | ||
| 66 | Hungarian (hu) | 66 | Hungarian (hu) |
| 67 | -------------- | 67 | -------------- |
| 68 | 68 | ||
| 69 | Árvíztűrő tükörfúrógép | 69 | Árvíztűrő tükörfúrógép |
| 70 | (= flood-proof mirror-drilling machine, only all non-ASCII letters) | 70 | (= flood-proof mirror-drilling machine, only all non-ASCII letters) |
| 71 | 71 | ||
| 72 | Icelandic (is) | 72 | Icelandic (is) |
| 73 | -------------- | 73 | -------------- |
| 74 | 74 | ||
| 75 | Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa | 75 | Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa |
| 76 | 76 | ||
| 77 | Sævör grét áðan því úlpan var ónýt | 77 | Sævör grét áðan því úlpan var ónýt |
| 78 | (some ASCII letters missing) | 78 | (some ASCII letters missing) |
| 79 | 79 | ||
| 80 | Greek (el) | 80 | Greek (el) |
| 81 | ------------- | 81 | ------------- |
| 82 | 82 | ||
| 83 | Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο | 83 | Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο |
| 84 | (= No more shall I see acacias or myrtles in the golden clearing) | 84 | (= No more shall I see acacias or myrtles in the golden clearing) |
| 85 | 85 | ||
| 86 | Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία | 86 | Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία |
| 87 | (= I uncover the soul-destroying abhorrence) | 87 | (= I uncover the soul-destroying abhorrence) |
| 88 | 88 | ||
| 89 | Hebrew (iw) | 89 | Hebrew (iw) |
| 90 | ----------- | 90 | ----------- |
| 91 | 91 | ||
| 92 | ? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה | 92 | ? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה |
| 93 | 93 | ||
| 94 | Polish (pl) | 94 | Polish (pl) |
| 95 | ----------- | 95 | ----------- |
| 96 | 96 | ||
| 97 | Pchnąć w tę łódź jeża lub osiem skrzyń fig | 97 | Pchnąć w tę łódź jeża lub osiem skrzyń fig |
| 98 | (= To push a hedgehog or eight bins of figs in this boat) | 98 | (= To push a hedgehog or eight bins of figs in this boat) |
| 99 | 99 | ||
| 100 | Zażółć gęślą jaźń | 100 | Zażółć gęślą jaźń |
| 101 | 101 | ||
| 102 | Russian (ru) | 102 | Russian (ru) |
| 103 | ------------ | 103 | ------------ |
| 104 | 104 | ||
| 105 | В чащах юга жил бы цитрус? Да, но фальшивый экземпляр! | 105 | В чащах юга жил бы цитрус? Да, но фальшивый экземпляр! |
| 106 | (= Would a citrus live in the bushes of south? Yes, but only a fake one!) | 106 | (= Would a citrus live in the bushes of south? Yes, but only a fake one!) |
| 107 | 107 | ||
| 108 | Thai (th) | 108 | Thai (th) |
| 109 | --------- | 109 | --------- |
| 110 | 110 | ||
| 111 | [--------------------------|------------------------] | 111 | [--------------------------|------------------------] |
| 112 | ๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน | 112 | ๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน |
| 113 | จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร | 113 | จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร |
| 114 | ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย | 114 | ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย |
| 115 | ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ | 115 | ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ |
| 116 | 116 | ||
| 117 | [The copyright for the Thai example is owned by The Computer | 117 | [The copyright for the Thai example is owned by The Computer |
| 118 | Association of Thailand under the Royal Patronage of His Majesty the | 118 | Association of Thailand under the Royal Patronage of His Majesty the |
| 119 | King.] | 119 | King.] |
| 120 | 120 | ||
| 121 | Please let me know if you find others! Special thanks to the people | 121 | Please let me know if you find others! Special thanks to the people |
| 122 | from all over the world who contributed these sentences. | 122 | from all over the world who contributed these sentences. | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | $type='TrueTypeUnicode'; | 2 | $type='TrueTypeUnicode'; |
| 3 | $name='AlMohanad'; | 3 | $name='AlMohanad'; |
| 4 | $desc=array('Ascent'=>1093,'Descent'=>-509,'CapHeight'=>1093,'Flags'=>32,'FontBBox'=>'[-278 -507 1124 1093]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600); | 4 | $desc=array('Ascent'=>1093,'Descent'=>-509,'CapHeight'=>1093,'Flags'=>32,'FontBBox'=>'[-278 -507 1124 1093]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600); |
| 5 | $up=-136; | 5 | $up=-136; |
| 6 | $ut=64; | 6 | $ut=64; |
| 7 | $dw=600; | 7 | $dw=600; |
| 8 | $cw=array( | 8 | $cw=array( |
| 9 | 0=>0,32=>139,33=>185,34=>308,35=>278,36=>278,37=>556,38=>463,39=>154,40=>185,41=>185,42=>278,43=>317,44=>139,45=>185,46=>139, | 9 | 0=>0,32=>139,33=>185,34=>308,35=>278,36=>278,37=>556,38=>463,39=>154,40=>185,41=>185,42=>278,43=>317,44=>139,45=>185,46=>139, |
| 10 | 47=>154,48=>278,49=>278,50=>278,51=>278,52=>278,53=>278,54=>278,55=>278,56=>278,57=>278,58=>185,59=>185,60=>317,61=>317,62=>317, | 10 | 47=>154,48=>278,49=>278,50=>278,51=>278,52=>278,53=>278,54=>278,55=>278,56=>278,57=>278,58=>185,59=>185,60=>317,61=>317,62=>317, |
| 11 | 63=>278,64=>517,65=>401,66=>371,67=>401,68=>402,69=>371,70=>339,71=>432,72=>430,73=>214,74=>278,75=>424,76=>369,77=>524,78=>401, | 11 | 63=>278,64=>517,65=>401,66=>371,67=>401,68=>402,69=>371,70=>339,71=>432,72=>430,73=>214,74=>278,75=>424,76=>369,77=>524,78=>401, |
| 12 | 79=>432,80=>339,81=>432,82=>396,83=>309,84=>371,85=>401,86=>401,87=>556,88=>401,89=>401,90=>371,91=>185,92=>154,93=>185,94=>323, | 12 | 79=>432,80=>339,81=>432,82=>396,83=>309,84=>371,85=>401,86=>401,87=>556,88=>401,89=>401,90=>371,91=>185,92=>154,93=>185,94=>323, |
| 13 | 95=>278,96=>185,97=>278,98=>309,99=>247,100=>309,101=>247,102=>185,103=>278,104=>309,105=>154,106=>185,107=>309,108=>154,109=>463,110=>309, | 13 | 95=>278,96=>185,97=>278,98=>309,99=>247,100=>309,101=>247,102=>185,103=>278,104=>309,105=>154,106=>185,107=>309,108=>154,109=>463,110=>309, |
| 14 | 111=>278,112=>309,113=>309,114=>247,115=>216,116=>185,117=>309,118=>278,119=>401,120=>278,121=>278,122=>247,123=>219,124=>122,125=>219,126=>289, | 14 | 111=>278,112=>309,113=>309,114=>247,115=>216,116=>185,117=>309,118=>278,119=>401,120=>278,121=>278,122=>247,123=>219,124=>122,125=>219,126=>289, |
| 15 | 8364=>278,1027=>339,8218=>185,1107=>254,8222=>278,8230=>556,8224=>278,8225=>278,710=>185,8240=>556,352=>309,8249=>185,338=>556,1036=>432,381=>371,1039=>432, | 15 | 8364=>278,1027=>339,8218=>185,1107=>254,8222=>278,8230=>556,8224=>278,8225=>278,710=>185,8240=>556,352=>309,8249=>185,338=>556,1036=>432,381=>371,1039=>432, |
| 16 | 8216=>185,8217=>185,8220=>278,8221=>278,8226=>194,8211=>278,8212=>556,732=>185,8482=>556,353=>216,8250=>185,339=>401,1116=>297,382=>247,376=>401,161=>185, | 16 | 8216=>185,8217=>185,8220=>278,8221=>278,8226=>194,8211=>278,8212=>556,732=>185,8482=>556,353=>216,8250=>185,339=>401,1116=>297,382=>247,376=>401,161=>185, |
| 17 | 162=>278,163=>278,164=>278,165=>278,166=>122,167=>278,168=>185,169=>415,170=>167,171=>278,172=>317,174=>415,175=>185,176=>222,177=>317,178=>167, | 17 | 162=>278,163=>278,164=>278,165=>278,166=>122,167=>278,168=>185,169=>415,170=>167,171=>278,172=>317,174=>415,175=>185,176=>222,177=>317,178=>167, |
| 18 | 179=>167,180=>185,181=>309,182=>300,183=>139,184=>185,185=>167,186=>183,187=>278,188=>417,189=>417,190=>417,191=>278,192=>401,193=>401,194=>401, | 18 | 179=>167,180=>185,181=>309,182=>300,183=>139,184=>185,185=>167,186=>183,187=>278,188=>417,189=>417,190=>417,191=>278,192=>401,193=>401,194=>401, |
| 19 | 195=>401,196=>401,197=>401,198=>556,199=>401,200=>371,201=>371,202=>371,203=>371,204=>216,205=>216,206=>216,207=>216,208=>401,209=>401,210=>432, | 19 | 195=>401,196=>401,197=>401,198=>556,199=>401,200=>371,201=>371,202=>371,203=>371,204=>216,205=>216,206=>216,207=>216,208=>401,209=>401,210=>432, |
| 20 | 211=>432,212=>432,213=>432,214=>432,215=>317,216=>432,217=>401,218=>401,219=>401,220=>401,221=>401,222=>339,223=>309,224=>278,225=>278,226=>278, | 20 | 211=>432,212=>432,213=>432,214=>432,215=>317,216=>432,217=>401,218=>401,219=>401,220=>401,221=>401,222=>339,223=>309,224=>278,225=>278,226=>278, |
| 21 | 227=>278,228=>278,229=>278,230=>401,231=>247,232=>247,233=>247,234=>247,235=>247,236=>154,237=>154,238=>154,239=>154,240=>278,241=>309,242=>278, | 21 | 227=>278,228=>278,229=>278,230=>401,231=>247,232=>247,233=>247,234=>247,235=>247,236=>154,237=>154,238=>154,239=>154,240=>278,241=>309,242=>278, |
| 22 | 243=>278,244=>278,245=>278,246=>278,247=>317,248=>278,249=>309,250=>309,251=>309,252=>309,253=>278,254=>309,255=>278,256=>401,257=>278,258=>401, | 22 | 243=>278,244=>278,245=>278,246=>278,247=>317,248=>278,249=>309,250=>309,251=>309,252=>309,253=>278,254=>309,255=>278,256=>401,257=>278,258=>401, |
| 23 | 259=>278,260=>401,261=>278,262=>401,263=>247,264=>401,265=>247,266=>401,267=>247,268=>401,269=>247,270=>401,271=>309,272=>401,273=>309,274=>371, | 23 | 259=>278,260=>401,261=>278,262=>401,263=>247,264=>401,265=>247,266=>401,267=>247,268=>401,269=>247,270=>401,271=>309,272=>401,273=>309,274=>371, |
| 24 | 275=>247,276=>371,277=>247,278=>371,279=>247,280=>371,281=>247,282=>371,283=>247,284=>432,285=>278,286=>432,287=>278,288=>432,289=>278,290=>432, | 24 | 275=>247,276=>371,277=>247,278=>371,279=>247,280=>371,281=>247,282=>371,283=>247,284=>432,285=>278,286=>432,287=>278,288=>432,289=>278,290=>432, |
| 25 | 291=>278,292=>432,293=>309,294=>432,295=>309,296=>216,297=>154,298=>216,299=>154,300=>216,301=>154,302=>216,303=>154,304=>216,305=>154,306=>490, | 25 | 291=>278,292=>432,293=>309,294=>432,295=>309,296=>216,297=>154,298=>216,299=>154,300=>216,301=>154,302=>216,303=>154,304=>216,305=>154,306=>490, |
| 26 | 307=>270,308=>278,309=>185,310=>432,311=>309,312=>297,313=>371,314=>154,315=>371,316=>154,317=>371,318=>154,319=>371,320=>293,321=>371,322=>154, | 26 | 307=>270,308=>278,309=>185,310=>432,311=>309,312=>297,313=>371,314=>154,315=>371,316=>154,317=>371,318=>154,319=>371,320=>293,321=>371,322=>154, |
| 27 | 323=>401,324=>309,325=>401,326=>309,327=>401,328=>309,329=>391,330=>401,331=>309,332=>432,333=>278,334=>432,335=>278,336=>432,337=>278,340=>401, | 27 | 323=>401,324=>309,325=>401,326=>309,327=>401,328=>309,329=>391,330=>401,331=>309,332=>432,333=>278,334=>432,335=>278,336=>432,337=>278,340=>401, |
| 28 | 341=>247,342=>401,343=>247,344=>401,345=>247,346=>309,347=>216,348=>309,349=>216,350=>309,351=>216,354=>371,355=>185,356=>371,357=>185,358=>371, | 28 | 341=>247,342=>401,343=>247,344=>401,345=>247,346=>309,347=>216,348=>309,349=>216,350=>309,351=>216,354=>371,355=>185,356=>371,357=>185,358=>371, |
| 29 | 359=>185,360=>401,361=>309,362=>401,363=>309,364=>401,365=>309,366=>401,367=>309,368=>401,369=>309,370=>401,371=>309,372=>556,373=>401,374=>401, | 29 | 359=>185,360=>401,361=>309,362=>401,363=>309,364=>401,365=>309,366=>401,367=>309,368=>401,369=>309,370=>401,371=>309,372=>556,373=>401,374=>401, |
| 30 | 375=>278,377=>371,378=>247,379=>371,380=>247,383=>185,450=>317,477=>247,484=>432,485=>278,536=>309,537=>216,538=>371,539=>185,658=>282,711=>185, | 30 | 375=>278,377=>371,378=>247,379=>371,380=>247,383=>185,450=>317,477=>247,484=>432,485=>278,536=>309,537=>216,538=>371,539=>185,658=>282,711=>185, |
| 31 | 728=>185,729=>185,730=>185,731=>185,733=>185,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0, | 31 | 728=>185,729=>185,730=>185,731=>185,733=>185,768=>0,769=>0,770=>0,771=>0,772=>0,773=>0,774=>0,775=>0,776=>0,777=>0,778=>0, |
| 32 | 779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0, | 32 | 779=>0,780=>0,781=>0,782=>0,783=>0,784=>0,785=>0,786=>0,787=>0,788=>0,789=>0,790=>0,791=>0,792=>0,793=>0,794=>0, |
| 33 | 795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0, | 33 | 795=>0,796=>0,797=>0,798=>0,799=>0,800=>0,801=>0,802=>0,803=>0,804=>0,805=>0,806=>0,807=>0,808=>0,809=>0,810=>0, |
| 34 | 811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0, | 34 | 811=>0,812=>0,813=>0,814=>0,815=>0,816=>0,817=>0,818=>0,819=>0,820=>0,821=>0,822=>0,823=>0,824=>0,825=>0,826=>0, |
| 35 | 827=>0,828=>0,829=>0,830=>0,831=>0,864=>0,865=>0,884=>111,885=>111,890=>0,894=>185,900=>100,901=>183,902=>401,903=>139,904=>451, | 35 | 827=>0,828=>0,829=>0,830=>0,831=>0,864=>0,865=>0,884=>111,885=>111,890=>0,894=>185,900=>100,901=>183,902=>401,903=>139,904=>451, |
| 36 | 905=>532,906=>316,908=>451,910=>501,911=>451,912=>183,913=>401,914=>371,915=>339,916=>422,917=>371,918=>371,919=>432,920=>432,921=>216,922=>432, | 36 | 905=>532,906=>316,908=>451,910=>501,911=>451,912=>183,913=>401,914=>371,915=>339,916=>422,917=>371,918=>371,919=>432,920=>432,921=>216,922=>432, |
| 37 | 923=>401,924=>524,925=>401,926=>361,927=>432,928=>451,929=>339,931=>361,932=>371,933=>401,934=>482,935=>401,936=>482,937=>451,938=>0,939=>401, | 37 | 923=>401,924=>524,925=>401,926=>361,927=>432,928=>451,929=>339,931=>361,932=>371,933=>401,934=>482,935=>401,936=>482,937=>451,938=>0,939=>401, |
| 38 | 940=>336,941=>244,942=>336,943=>183,944=>306,945=>336,946=>306,947=>306,948=>306,949=>244,950=>275,951=>336,952=>306,953=>183,954=>338,955=>275, | 38 | 940=>336,941=>244,942=>336,943=>183,944=>306,945=>336,946=>306,947=>306,948=>306,949=>244,950=>275,951=>336,952=>306,953=>183,954=>338,955=>275, |
| 39 | 956=>336,957=>275,958=>275,959=>306,960=>336,961=>306,962=>244,963=>306,964=>244,965=>306,966=>367,967=>275,968=>397,969=>397,970=>183,971=>306, | 39 | 956=>336,957=>275,958=>275,959=>306,960=>336,961=>306,962=>244,963=>306,964=>244,965=>306,966=>367,967=>275,968=>397,969=>397,970=>183,971=>306, |
| 40 | 972=>306,973=>306,974=>397,976=>306,977=>306,978=>401,979=>401,980=>401,981=>367,982=>336,986=>283,987=>237,988=>339,989=>261,1024=>371,1025=>371, | 40 | 972=>306,973=>306,974=>397,976=>306,977=>306,978=>401,979=>401,980=>401,981=>367,982=>336,986=>283,987=>237,988=>339,989=>261,1024=>371,1025=>371, |
| 41 | 1026=>371,1028=>401,1029=>309,1030=>216,1031=>216,1032=>278,1033=>573,1034=>573,1035=>449,1037=>432,1038=>401,1040=>401,1041=>371,1042=>371,1043=>328,1044=>432, | 41 | 1026=>371,1028=>401,1029=>309,1030=>216,1031=>216,1032=>278,1033=>573,1034=>573,1035=>449,1037=>432,1038=>401,1040=>401,1041=>371,1042=>371,1043=>328,1044=>432, |
| 42 | 1045=>371,1046=>615,1047=>313,1048=>429,1049=>429,1050=>424,1051=>432,1052=>524,1053=>432,1054=>432,1055=>430,1056=>339,1057=>401,1058=>371,1059=>401,1060=>444, | 42 | 1045=>371,1046=>615,1047=>313,1048=>429,1049=>429,1050=>424,1051=>432,1052=>524,1053=>432,1054=>432,1055=>430,1056=>339,1057=>401,1058=>371,1059=>401,1060=>444, |
| 43 | 1061=>401,1062=>429,1063=>432,1064=>618,1065=>618,1066=>482,1067=>539,1068=>350,1069=>401,1070=>619,1071=>408,1072=>278,1073=>278,1074=>279,1075=>246,1076=>309, | 43 | 1061=>401,1062=>429,1063=>432,1064=>618,1065=>618,1066=>482,1067=>539,1068=>350,1069=>401,1070=>619,1071=>408,1072=>278,1073=>278,1074=>279,1075=>246,1076=>309, |
| 44 | 1077=>247,1078=>417,1079=>227,1080=>319,1081=>319,1082=>297,1083=>302,1084=>376,1085=>309,1086=>278,1087=>309,1088=>309,1089=>247,1090=>274,1091=>278,1092=>458, | 44 | 1077=>247,1078=>417,1079=>227,1080=>319,1081=>319,1082=>297,1083=>302,1084=>376,1085=>309,1086=>278,1087=>309,1088=>309,1089=>247,1090=>274,1091=>278,1092=>458, |
| 45 | 1093=>278,1094=>309,1095=>309,1096=>454,1097=>454,1098=>340,1099=>423,1100=>284,1101=>247,1102=>439,1103=>284,1104=>247,1105=>247,1106=>309,1108=>247,1109=>216, | 45 | 1093=>278,1094=>309,1095=>309,1096=>454,1097=>454,1098=>340,1099=>423,1100=>284,1101=>247,1102=>439,1103=>284,1104=>247,1105=>247,1106=>309,1108=>247,1109=>216, |
| 46 | 1110=>154,1111=>154,1112=>185,1113=>440,1114=>437,1115=>309,1117=>309,1118=>278,1119=>309,1164=>339,1165=>284,1166=>339,1167=>309,1168=>339,1169=>254,1170=>339, | 46 | 1110=>154,1111=>154,1112=>185,1113=>440,1114=>437,1115=>309,1117=>309,1118=>278,1119=>309,1164=>339,1165=>284,1166=>339,1167=>309,1168=>339,1169=>254,1170=>339, |
| 47 | 1171=>254,1172=>339,1173=>254,1174=>615,1175=>417,1176=>322,1177=>216,1178=>432,1179=>297,1180=>432,1181=>297,1182=>432,1183=>297,1184=>537,1185=>352,1186=>432, | 47 | 1171=>254,1172=>339,1173=>254,1174=>615,1175=>417,1176=>322,1177=>216,1178=>432,1179=>297,1180=>432,1181=>297,1182=>432,1183=>297,1184=>537,1185=>352,1186=>432, |
| 48 | 1187=>309,1188=>563,1189=>408,1190=>432,1191=>461,1192=>401,1193=>247,1194=>401,1195=>247,1196=>371,1197=>274,1198=>401,1199=>278,1200=>401,1201=>278,1202=>401, | 48 | 1187=>309,1188=>563,1189=>408,1190=>432,1191=>461,1192=>401,1193=>247,1194=>401,1195=>247,1196=>371,1197=>274,1198=>401,1199=>278,1200=>401,1201=>278,1202=>401, |
| 49 | 1203=>278,1204=>581,1205=>432,1206=>432,1207=>309,1208=>432,1209=>309,1210=>432,1211=>309,1212=>367,1213=>247,1214=>367,1215=>247,1216=>216,1217=>615,1218=>417, | 49 | 1203=>278,1204=>581,1205=>432,1206=>432,1207=>309,1208=>432,1209=>309,1210=>432,1211=>309,1212=>367,1213=>247,1214=>367,1215=>247,1216=>216,1217=>615,1218=>417, |
| 50 | 1219=>432,1220=>297,1223=>432,1224=>309,1227=>432,1228=>309,1232=>401,1233=>278,1234=>401,1235=>278,1236=>556,1237=>401,1238=>371,1239=>247,1240=>367,1241=>247, | 50 | 1219=>432,1220=>297,1223=>432,1224=>309,1227=>432,1228=>309,1232=>401,1233=>278,1234=>401,1235=>278,1236=>556,1237=>401,1238=>371,1239=>247,1240=>367,1241=>247, |
| 51 | 1242=>367,1243=>247,1244=>615,1245=>417,1246=>313,1247=>227,1248=>322,1249=>216,1250=>432,1251=>309,1252=>432,1253=>309,1254=>432,1255=>278,1256=>432,1257=>278, | 51 | 1242=>367,1243=>247,1244=>615,1245=>417,1246=>313,1247=>227,1248=>322,1249=>216,1250=>432,1251=>309,1252=>432,1253=>309,1254=>432,1255=>278,1256=>432,1257=>278, |
| 52 | 1258=>432,1259=>278,1260=>401,1261=>247,1262=>401,1263=>278,1264=>401,1265=>278,1266=>401,1267=>278,1268=>432,1269=>309,1272=>548,1273=>423,1488=>280,1489=>280, | 52 | 1258=>432,1259=>278,1260=>401,1261=>247,1262=>401,1263=>278,1264=>401,1265=>278,1266=>401,1267=>278,1268=>432,1269=>309,1272=>548,1273=>423,1488=>280,1489=>280, |
| 53 | 1490=>174,1491=>280,1492=>280,1493=>158,1494=>158,1495=>280,1496=>280,1497=>158,1498=>287,1499=>280,1500=>280,1501=>280,1502=>280,1503=>156,1504=>158,1505=>280, | 53 | 1490=>174,1491=>280,1492=>280,1493=>158,1494=>158,1495=>280,1496=>280,1497=>158,1498=>287,1499=>280,1500=>280,1501=>280,1502=>280,1503=>156,1504=>158,1505=>280, |
| 54 | 1506=>280,1507=>292,1508=>280,1509=>273,1510=>280,1511=>305,1512=>285,1513=>299,1514=>280,1548=>195,1563=>246,1567=>340,1569=>392,1570=>306,1571=>247,1572=>447, | 54 | 1506=>280,1507=>292,1508=>280,1509=>273,1510=>280,1511=>305,1512=>285,1513=>299,1514=>280,1548=>195,1563=>246,1567=>340,1569=>392,1570=>306,1571=>247,1572=>447, |
| 55 | 1573=>247,1574=>602,1575=>192,1576=>635,1577=>369,1578=>635,1579=>635,1580=>548,1581=>1173,1582=>548,1583=>363,1584=>363,1585=>439,1586=>442,1587=>875,1588=>875, | 55 | 1573=>247,1574=>602,1575=>192,1576=>635,1577=>369,1578=>635,1579=>635,1580=>548,1581=>1173,1582=>548,1583=>363,1584=>363,1585=>439,1586=>442,1587=>875,1588=>875, |
| 56 | 1589=>1061,1590=>1061,1591=>811,1592=>811,1593=>549,1594=>547,1600=>389,1601=>755,1602=>574,1603=>717,1604=>555,1605=>423,1606=>532,1607=>371,1608=>454,1609=>633, | 56 | 1589=>1061,1590=>1061,1591=>811,1592=>811,1593=>549,1594=>547,1600=>389,1601=>755,1602=>574,1603=>717,1604=>555,1605=>423,1606=>532,1607=>371,1608=>454,1609=>633, |
| 57 | 1610=>643,1611=>-19,1612=>-26,1613=>-20,1614=>-19,1615=>-18,1616=>-19,1617=>-19,1618=>-15,1632=>383,1633=>383,1634=>383,1635=>383,1636=>383,1637=>383,1638=>383, | 57 | 1610=>643,1611=>-19,1612=>-26,1613=>-20,1614=>-19,1615=>-18,1616=>-19,1617=>-19,1618=>-15,1632=>383,1633=>383,1634=>383,1635=>383,1636=>383,1637=>383,1638=>383, |
| 58 | 1639=>383,1640=>383,1641=>383,1642=>383,1645=>398,7936=>336,7937=>336,7938=>336,7939=>336,7940=>336,7941=>336,7942=>336,7943=>336,7944=>401,7945=>401,7946=>401, | 58 | 1639=>383,1640=>383,1641=>383,1642=>383,1645=>398,7936=>336,7937=>336,7938=>336,7939=>336,7940=>336,7941=>336,7942=>336,7943=>336,7944=>401,7945=>401,7946=>401, |
| 59 | 7947=>401,7948=>401,7949=>401,7950=>401,7951=>401,7952=>244,7953=>244,7954=>244,7955=>244,7956=>244,7957=>244,7960=>371,7961=>371,7962=>371,7963=>371,7964=>371, | 59 | 7947=>401,7948=>401,7949=>401,7950=>401,7951=>401,7952=>244,7953=>244,7954=>244,7955=>244,7956=>244,7957=>244,7960=>371,7961=>371,7962=>371,7963=>371,7964=>371, |
| 60 | 7965=>371,7968=>336,7969=>336,7970=>336,7971=>336,7972=>336,7973=>336,7974=>336,7975=>336,7976=>432,7977=>432,7978=>432,7979=>432,7980=>432,7981=>432,7982=>432, | 60 | 7965=>371,7968=>336,7969=>336,7970=>336,7971=>336,7972=>336,7973=>336,7974=>336,7975=>336,7976=>432,7977=>432,7978=>432,7979=>432,7980=>432,7981=>432,7982=>432, |
| 61 | 7983=>432,7984=>183,7985=>183,7986=>183,7987=>183,7988=>183,7989=>183,7990=>183,7991=>183,7992=>216,7993=>216,7994=>216,7995=>216,7996=>216,7997=>216,7998=>216, | 61 | 7983=>432,7984=>183,7985=>183,7986=>183,7987=>183,7988=>183,7989=>183,7990=>183,7991=>183,7992=>216,7993=>216,7994=>216,7995=>216,7996=>216,7997=>216,7998=>216, |
| 62 | 7999=>216,8000=>306,8001=>306,8002=>306,8003=>306,8004=>306,8005=>306,8008=>432,8009=>432,8010=>432,8011=>432,8012=>432,8013=>432,8016=>306,8017=>306,8018=>306, | 62 | 7999=>216,8000=>306,8001=>306,8002=>306,8003=>306,8004=>306,8005=>306,8008=>432,8009=>432,8010=>432,8011=>432,8012=>432,8013=>432,8016=>306,8017=>306,8018=>306, |
| 63 | 8019=>306,8020=>306,8021=>306,8022=>306,8023=>306,8025=>401,8027=>401,8029=>401,8031=>401,8032=>397,8033=>397,8034=>397,8035=>397,8036=>397,8037=>397,8038=>397, | 63 | 8019=>306,8020=>306,8021=>306,8022=>306,8023=>306,8025=>401,8027=>401,8029=>401,8031=>401,8032=>397,8033=>397,8034=>397,8035=>397,8036=>397,8037=>397,8038=>397, |
| 64 | 8039=>397,8040=>451,8041=>451,8042=>451,8043=>451,8044=>451,8045=>451,8046=>451,8047=>451,8048=>336,8049=>336,8050=>244,8051=>244,8052=>336,8053=>336,8054=>183, | 64 | 8039=>397,8040=>451,8041=>451,8042=>451,8043=>451,8044=>451,8045=>451,8046=>451,8047=>451,8048=>336,8049=>336,8050=>244,8051=>244,8052=>336,8053=>336,8054=>183, |
| 65 | 8055=>183,8056=>306,8057=>306,8058=>306,8059=>306,8060=>397,8061=>397,8064=>336,8065=>336,8066=>336,8067=>336,8068=>336,8069=>336,8070=>336,8071=>336,8072=>401, | 65 | 8055=>183,8056=>306,8057=>306,8058=>306,8059=>306,8060=>397,8061=>397,8064=>336,8065=>336,8066=>336,8067=>336,8068=>336,8069=>336,8070=>336,8071=>336,8072=>401, |
| 66 | 8073=>401,8074=>401,8075=>401,8076=>401,8077=>401,8078=>401,8079=>401,8080=>336,8081=>336,8082=>336,8083=>336,8084=>336,8085=>336,8086=>336,8087=>336,8088=>432, | 66 | 8073=>401,8074=>401,8075=>401,8076=>401,8077=>401,8078=>401,8079=>401,8080=>336,8081=>336,8082=>336,8083=>336,8084=>336,8085=>336,8086=>336,8087=>336,8088=>432, |
| 67 | 8089=>432,8090=>432,8091=>432,8092=>432,8093=>432,8094=>432,8095=>432,8096=>397,8097=>397,8098=>397,8099=>397,8100=>397,8101=>397,8102=>397,8103=>397,8104=>451, | 67 | 8089=>432,8090=>432,8091=>432,8092=>432,8093=>432,8094=>432,8095=>432,8096=>397,8097=>397,8098=>397,8099=>397,8100=>397,8101=>397,8102=>397,8103=>397,8104=>451, |
| 68 | 8105=>451,8106=>451,8107=>451,8108=>451,8109=>451,8110=>451,8111=>451,8112=>336,8113=>336,8114=>336,8115=>336,8116=>336,8118=>336,8119=>336,8120=>401,8121=>401, | 68 | 8105=>451,8106=>451,8107=>451,8108=>451,8109=>451,8110=>451,8111=>451,8112=>336,8113=>336,8114=>336,8115=>336,8116=>336,8118=>336,8119=>336,8120=>401,8121=>401, |
| 69 | 8122=>401,8123=>401,8124=>401,8125=>278,8126=>0,8127=>278,8128=>278,8129=>306,8130=>336,8131=>336,8132=>336,8134=>336,8135=>336,8136=>371,8137=>371,8138=>432, | 69 | 8122=>401,8123=>401,8124=>401,8125=>278,8126=>0,8127=>278,8128=>278,8129=>306,8130=>336,8131=>336,8132=>336,8134=>336,8135=>336,8136=>371,8137=>371,8138=>432, |
| 70 | 8139=>432,8140=>432,8141=>278,8142=>278,8143=>278,8144=>183,8145=>183,8146=>183,8147=>183,8150=>183,8151=>183,8152=>216,8153=>216,8154=>216,8155=>216,8157=>278, | 70 | 8139=>432,8140=>432,8141=>278,8142=>278,8143=>278,8144=>183,8145=>183,8146=>183,8147=>183,8150=>183,8151=>183,8152=>216,8153=>216,8154=>216,8155=>216,8157=>278, |
| 71 | 8158=>278,8159=>278,8160=>306,8161=>306,8162=>306,8163=>306,8164=>306,8165=>306,8166=>306,8167=>306,8168=>401,8169=>401,8170=>401,8171=>401,8172=>339,8173=>306, | 71 | 8158=>278,8159=>278,8160=>306,8161=>306,8162=>306,8163=>306,8164=>306,8165=>306,8166=>306,8167=>306,8168=>401,8169=>401,8170=>401,8171=>401,8172=>339,8173=>306, |
| 72 | 8174=>306,8175=>278,8178=>397,8179=>397,8180=>397,8182=>397,8183=>397,8184=>432,8185=>432,8186=>451,8187=>451,8188=>451,8189=>278,8190=>278,8208=>185,8209=>185, | 72 | 8174=>306,8175=>278,8178=>397,8179=>397,8180=>397,8182=>397,8183=>397,8184=>432,8185=>432,8186=>451,8187=>451,8188=>451,8189=>278,8190=>278,8208=>185,8209=>185, |
| 73 | 8219=>185,8223=>278,8227=>311,8241=>1011,8248=>261,8251=>404,8253=>386,8255=>529,8256=>529,8257=>188,8258=>517,8259=>185,8260=>93,8261=>184,8262=>184,8267=>300, | 73 | 8219=>185,8223=>278,8227=>311,8241=>1011,8248=>261,8251=>404,8253=>386,8255=>529,8256=>529,8257=>188,8258=>517,8259=>185,8260=>93,8261=>184,8262=>184,8267=>300, |
| 74 | 8308=>167,8309=>556,8321=>167,8322=>167,8323=>167,8324=>167,8352=>394,8353=>401,8354=>435,8355=>339,8356=>278,8357=>463,8358=>401,8359=>389,8361=>556,8470=>530, | 74 | 8308=>167,8309=>556,8321=>167,8322=>167,8323=>167,8324=>167,8352=>394,8353=>401,8354=>435,8355=>339,8356=>278,8357=>463,8358=>401,8359=>389,8361=>556,8470=>530, |
| 75 | 8471=>415,8479=>401,8483=>401,8486=>451,8487=>451,8494=>306,8498=>339,8543=>417,8706=>274,8710=>340,8721=>396,8722=>317,8730=>305,8734=>418,8800=>317,8804=>317, | 75 | 8471=>415,8479=>401,8483=>401,8486=>451,8487=>451,8494=>306,8498=>339,8543=>417,8706=>274,8710=>340,8721=>396,8722=>317,8730=>305,8734=>418,8800=>317,8804=>317, |
| 76 | 8805=>317,9674=>274,12353=>556,12354=>556,12355=>556,12356=>556,12357=>556,12358=>556,12359=>556,12360=>556,12361=>556,12362=>556,12363=>556,12364=>556,12365=>556,12366=>556, | 76 | 8805=>317,9674=>274,12353=>556,12354=>556,12355=>556,12356=>556,12357=>556,12358=>556,12359=>556,12360=>556,12361=>556,12362=>556,12363=>556,12364=>556,12365=>556,12366=>556, |
| 77 | 12367=>556,12368=>556,12369=>556,12370=>556,12371=>556,12372=>556,12373=>556,12374=>556,12375=>556,12376=>556,12377=>556,12378=>556,12379=>556,12380=>556,12381=>556,12382=>556, | 77 | 12367=>556,12368=>556,12369=>556,12370=>556,12371=>556,12372=>556,12373=>556,12374=>556,12375=>556,12376=>556,12377=>556,12378=>556,12379=>556,12380=>556,12381=>556,12382=>556, |
| 78 | 12383=>556,12384=>556,12385=>556,12386=>556,12387=>556,12388=>556,12389=>556,12390=>556,12391=>556,12392=>556,12393=>556,12394=>556,12395=>556,12396=>556,12397=>556,12398=>556, | 78 | 12383=>556,12384=>556,12385=>556,12386=>556,12387=>556,12388=>556,12389=>556,12390=>556,12391=>556,12392=>556,12393=>556,12394=>556,12395=>556,12396=>556,12397=>556,12398=>556, |
| 79 | 12399=>556,12400=>556,12401=>556,12402=>556,12403=>556,12404=>556,12405=>556,12406=>556,12407=>556,12408=>556,12409=>556,12410=>556,12411=>556,12412=>556,12413=>556,12414=>556, | 79 | 12399=>556,12400=>556,12401=>556,12402=>556,12403=>556,12404=>556,12405=>556,12406=>556,12407=>556,12408=>556,12409=>556,12410=>556,12411=>556,12412=>556,12413=>556,12414=>556, |
| 80 | 12415=>556,12416=>556,12417=>556,12418=>556,12419=>556,12420=>556,12421=>556,12422=>556,12423=>556,12424=>556,12425=>556,12426=>556,12427=>556,12428=>556,12429=>556,12430=>556, | 80 | 12415=>556,12416=>556,12417=>556,12418=>556,12419=>556,12420=>556,12421=>556,12422=>556,12423=>556,12424=>556,12425=>556,12426=>556,12427=>556,12428=>556,12429=>556,12430=>556, |
| 81 | 12431=>556,12432=>556,12433=>556,12434=>556,12435=>556,12449=>556,12450=>556,12451=>556,12452=>556,12453=>556,12454=>556,12455=>556,12456=>556,12457=>556,12458=>556,12459=>556, | 81 | 12431=>556,12432=>556,12433=>556,12434=>556,12435=>556,12449=>556,12450=>556,12451=>556,12452=>556,12453=>556,12454=>556,12455=>556,12456=>556,12457=>556,12458=>556,12459=>556, |
| 82 | 12460=>556,12461=>556,12462=>556,12463=>556,12464=>556,12465=>556,12466=>556,12467=>556,12468=>556,12469=>556,12470=>556,12471=>556,12472=>556,12473=>556,12474=>556,12475=>556, | 82 | 12460=>556,12461=>556,12462=>556,12463=>556,12464=>556,12465=>556,12466=>556,12467=>556,12468=>556,12469=>556,12470=>556,12471=>556,12472=>556,12473=>556,12474=>556,12475=>556, |
| 83 | 12476=>556,12477=>556,12478=>556,12479=>556,12480=>556,12481=>556,12482=>556,12483=>556,12484=>556,12485=>556,12486=>556,12487=>556,12488=>556,12489=>556,12490=>556,12491=>556, | 83 | 12476=>556,12477=>556,12478=>556,12479=>556,12480=>556,12481=>556,12482=>556,12483=>556,12484=>556,12485=>556,12486=>556,12487=>556,12488=>556,12489=>556,12490=>556,12491=>556, |
| 84 | 12492=>556,12493=>556,12494=>556,12495=>556,12496=>556,12497=>556,12498=>556,12499=>556,12500=>556,12501=>556,12502=>556,12503=>556,12504=>556,12505=>556,12506=>556,12507=>556, | 84 | 12492=>556,12493=>556,12494=>556,12495=>556,12496=>556,12497=>556,12498=>556,12499=>556,12500=>556,12501=>556,12502=>556,12503=>556,12504=>556,12505=>556,12506=>556,12507=>556, |
| 85 | 12508=>556,12509=>556,12510=>556,12511=>556,12512=>556,12513=>556,12514=>556,12515=>556,12516=>556,12517=>556,12518=>556,12519=>556,12520=>556,12521=>556,12522=>556,12523=>556, | 85 | 12508=>556,12509=>556,12510=>556,12511=>556,12512=>556,12513=>556,12514=>556,12515=>556,12516=>556,12517=>556,12518=>556,12519=>556,12520=>556,12521=>556,12522=>556,12523=>556, |
| 86 | 12524=>556,12525=>556,12526=>556,12527=>556,12528=>556,12529=>556,12530=>556,12531=>556,12532=>556,12533=>556,12534=>556,63033=>278,63034=>278,63035=>278,63036=>278,63037=>278, | 86 | 12524=>556,12525=>556,12526=>556,12527=>556,12528=>556,12529=>556,12530=>556,12531=>556,12532=>556,12533=>556,12534=>556,63033=>278,63034=>278,63035=>278,63036=>278,63037=>278, |
| 87 | 63038=>278,63039=>278,63040=>278,63041=>278,63171=>185,63196=>278,64256=>309,64257=>309,64258=>309,64259=>463,64260=>463,64262=>402,64606=>0,64607=>0,64608=>0,64609=>0, | 87 | 63038=>278,63039=>278,63040=>278,63041=>278,63171=>185,63196=>278,64256=>309,64257=>309,64258=>309,64259=>463,64260=>463,64262=>402,64606=>0,64607=>0,64608=>0,64609=>0, |
| 88 | 64610=>0,64830=>467,64831=>467,65010=>814,65152=>392,65153=>306,65154=>281,65155=>247,65156=>250,65157=>447,65158=>412,65159=>247,65160=>222,65161=>602,65162=>535,65163=>360, | 88 | 64610=>0,64830=>467,64831=>467,65010=>814,65152=>392,65153=>306,65154=>281,65155=>247,65156=>250,65157=>447,65158=>412,65159=>247,65160=>222,65161=>602,65162=>535,65163=>360, |
| 89 | 65164=>329,65165=>192,65166=>220,65167=>635,65168=>644,65169=>338,65170=>321,65171=>369,65172=>419,65173=>635,65174=>644,65175=>345,65176=>336,65177=>635,65178=>644,65179=>393, | 89 | 65164=>329,65165=>192,65166=>220,65167=>635,65168=>644,65169=>338,65170=>321,65171=>369,65172=>419,65173=>635,65174=>644,65175=>345,65176=>336,65177=>635,65178=>644,65179=>393, |
| 90 | 65180=>345,65181=>548,65182=>553,65183=>637,65184=>652,65185=>548,65186=>546,65187=>637,65188=>656,65189=>548,65190=>544,65191=>637,65192=>656,65193=>363,65194=>439,65195=>363, | 90 | 65180=>345,65181=>548,65182=>553,65183=>637,65184=>652,65185=>548,65186=>546,65187=>637,65188=>656,65189=>548,65190=>544,65191=>637,65192=>656,65193=>363,65194=>439,65195=>363, |
| 91 | 65196=>439,65197=>440,65198=>471,65199=>439,65200=>474,65201=>875,65202=>871,65203=>608,65204=>588,65205=>875,65206=>871,65207=>609,65208=>587,65209=>1061,65210=>1033,65211=>794, | 91 | 65196=>439,65197=>440,65198=>471,65199=>439,65200=>474,65201=>875,65202=>871,65203=>608,65204=>588,65205=>875,65206=>871,65207=>609,65208=>587,65209=>1061,65210=>1033,65211=>794, |
| 92 | 65212=>758,65213=>1061,65214=>1033,65215=>794,65216=>761,65217=>811,65218=>793,65219=>659,65220=>647,65221=>811,65222=>793,65223=>659,65224=>642,65225=>549,65226=>481,65227=>512, | 92 | 65212=>758,65213=>1061,65214=>1033,65215=>794,65216=>761,65217=>811,65218=>793,65219=>659,65220=>647,65221=>811,65222=>793,65223=>659,65224=>642,65225=>549,65226=>481,65227=>512, |
| 93 | 65228=>409,65229=>547,65230=>476,65231=>512,65232=>409,65233=>755,65234=>748,65235=>416,65236=>442,65237=>574,65238=>550,65239=>416,65240=>442,65241=>717,65242=>687,65243=>883, | 93 | 65228=>409,65229=>547,65230=>476,65231=>512,65232=>409,65233=>755,65234=>748,65235=>416,65236=>442,65237=>574,65238=>550,65239=>416,65240=>442,65241=>717,65242=>687,65243=>883, |
| 94 | 65244=>409,65245=>555,65246=>511,65247=>338,65248=>297,65249=>423,65250=>478,65251=>489,65252=>476,65253=>532,65254=>548,65255=>336,65256=>326,65257=>371,65258=>391,65259=>524, | 94 | 65244=>409,65245=>555,65246=>511,65247=>338,65248=>297,65249=>423,65250=>478,65251=>489,65252=>476,65253=>532,65254=>548,65255=>336,65256=>326,65257=>371,65258=>391,65259=>524, |
| 95 | 65260=>412,65261=>454,65262=>412,65263=>633,65264=>566,65265=>643,65266=>560,65267=>357,65268=>333,65269=>623,65270=>617,65271=>603,65272=>621,65273=>576,65274=>617,65275=>576, | 95 | 65260=>412,65261=>454,65262=>412,65263=>633,65264=>566,65265=>643,65266=>560,65267=>357,65268=>333,65269=>623,65270=>617,65271=>603,65272=>621,65273=>576,65274=>617,65275=>576, |
| 96 | 65276=>625); | 96 | 65276=>625); |
| 97 | $enc=''; | 97 | $enc=''; |
| 98 | $diff=''; | 98 | $diff=''; |
| 99 | $file='almohanad.z'; | 99 | $file='almohanad.z'; |
| 100 | $ctg='almohanad.ctg.z'; | 100 | $ctg='almohanad.ctg.z'; |
| 101 | $originalsize=227760; | 101 | $originalsize=227760; |
| 102 | // --- EOF --- | 102 | // --- EOF --- | ... | ... |
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
| 1 | <?php | 1 | <?php |
| 2 | // core font definition file for TCPDF (www.tcpdf.org) | 2 | // core font definition file for TCPDF (www.tcpdf.org) |
| 3 | $type='core'; | 3 | $type='core'; |
| 4 | $dw=500; | 4 | $dw=500; |
| 5 | $cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250, | 5 | $cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250, |
| 6 | 10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250, | 6 | 10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250, |
| 7 | 20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250, | 7 | 20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250, |
| 8 | 30=>250,31=>250,32=>250,33=>333,34=>713,35=>500,36=>549,37=>833,38=>778,39=>439, | 8 | 30=>250,31=>250,32=>250,33=>333,34=>713,35=>500,36=>549,37=>833,38=>778,39=>439, |
| 9 | 40=>333,41=>333,42=>500,43=>549,44=>250,45=>549,46=>250,47=>278,48=>500,49=>500, | 9 | 40=>333,41=>333,42=>500,43=>549,44=>250,45=>549,46=>250,47=>278,48=>500,49=>500, |
| 10 | 50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>278,59=>278, | 10 | 50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>278,59=>278, |
| 11 | 60=>549,61=>549,62=>549,63=>444,64=>549,65=>722,66=>667,67=>722,68=>612,69=>611, | 11 | 60=>549,61=>549,62=>549,63=>444,64=>549,65=>722,66=>667,67=>722,68=>612,69=>611, |
| 12 | 70=>763,71=>603,72=>722,73=>333,74=>631,75=>722,76=>686,77=>889,78=>722,79=>722, | 12 | 70=>763,71=>603,72=>722,73=>333,74=>631,75=>722,76=>686,77=>889,78=>722,79=>722, |
| 13 | 80=>768,81=>741,82=>556,83=>592,84=>611,85=>690,86=>439,87=>768,88=>645,89=>795, | 13 | 80=>768,81=>741,82=>556,83=>592,84=>611,85=>690,86=>439,87=>768,88=>645,89=>795, |
| 14 | 90=>611,91=>333,92=>863,93=>333,94=>658,95=>500,96=>500,97=>631,98=>549,99=>549, | 14 | 90=>611,91=>333,92=>863,93=>333,94=>658,95=>500,96=>500,97=>631,98=>549,99=>549, |
| 15 | 100=>494,101=>439,102=>521,103=>411,104=>603,105=>329,106=>603,107=>549,108=>549, | 15 | 100=>494,101=>439,102=>521,103=>411,104=>603,105=>329,106=>603,107=>549,108=>549, |
| 16 | 109=>576,110=>521,111=>549,112=>549,113=>521,114=>549,115=>603,116=>439,117=>576, | 16 | 109=>576,110=>521,111=>549,112=>549,113=>521,114=>549,115=>603,116=>439,117=>576, |
| 17 | 118=>713,119=>686,120=>493,121=>686,122=>494,123=>480,124=>200,125=>480,126=>549, | 17 | 118=>713,119=>686,120=>493,121=>686,122=>494,123=>480,124=>200,125=>480,126=>549, |
| 18 | 127=>0,128=>0,129=>0,130=>0,131=>0,132=>0,133=>0,134=>0,135=>0,136=>0,137=>0, | 18 | 127=>0,128=>0,129=>0,130=>0,131=>0,132=>0,133=>0,134=>0,135=>0,136=>0,137=>0, |
| 19 | 138=>0,139=>0,140=>0,141=>0,142=>0,143=>0,144=>0,145=>0,146=>0,147=>0,148=>0, | 19 | 138=>0,139=>0,140=>0,141=>0,142=>0,143=>0,144=>0,145=>0,146=>0,147=>0,148=>0, |
| 20 | 149=>0,150=>0,151=>0,152=>0,153=>0,154=>0,155=>0,156=>0,157=>0,158=>0,159=>0, | 20 | 149=>0,150=>0,151=>0,152=>0,153=>0,154=>0,155=>0,156=>0,157=>0,158=>0,159=>0, |
| 21 | 160=>750,161=>620,162=>247,163=>549,164=>167,165=>713,166=>500,167=>753,168=>753, | 21 | 160=>750,161=>620,162=>247,163=>549,164=>167,165=>713,166=>500,167=>753,168=>753, |
| 22 | 169=>753,170=>753,171=>1042,172=>987,173=>603,174=>987,175=>603,176=>400,177=>549, | 22 | 169=>753,170=>753,171=>1042,172=>987,173=>603,174=>987,175=>603,176=>400,177=>549, |
| 23 | 178=>411,179=>549,180=>549,181=>713,182=>494,183=>460,184=>549,185=>549,186=>549, | 23 | 178=>411,179=>549,180=>549,181=>713,182=>494,183=>460,184=>549,185=>549,186=>549, |
| 24 | 187=>549,188=>1000,189=>603,190=>1000,191=>658,192=>823,193=>686,194=>795,195=>987, | 24 | 187=>549,188=>1000,189=>603,190=>1000,191=>658,192=>823,193=>686,194=>795,195=>987, |
| 25 | 196=>768,197=>768,198=>823,199=>768,200=>768,201=>713,202=>713,203=>713,204=>713, | 25 | 196=>768,197=>768,198=>823,199=>768,200=>768,201=>713,202=>713,203=>713,204=>713, |
| 26 | 205=>713,206=>713,207=>713,208=>768,209=>713,210=>790,211=>790,212=>890,213=>823, | 26 | 205=>713,206=>713,207=>713,208=>768,209=>713,210=>790,211=>790,212=>890,213=>823, |
| 27 | 214=>549,215=>250,216=>713,217=>603,218=>603,219=>1042,220=>987,221=>603,222=>987, | 27 | 214=>549,215=>250,216=>713,217=>603,218=>603,219=>1042,220=>987,221=>603,222=>987, |
| 28 | 223=>603,224=>494,225=>329,226=>790,227=>790,228=>786,229=>713,230=>384,231=>384, | 28 | 223=>603,224=>494,225=>329,226=>790,227=>790,228=>786,229=>713,230=>384,231=>384, |
| 29 | 232=>384,233=>384,234=>384,235=>384,236=>494,237=>494,238=>494,239=>494,240=>0, | 29 | 232=>384,233=>384,234=>384,235=>384,236=>494,237=>494,238=>494,239=>494,240=>0, |
| 30 | 241=>329,242=>274,243=>686,244=>686,245=>686,246=>384,247=>384,248=>384,249=>384, | 30 | 241=>329,242=>274,243=>686,244=>686,245=>686,246=>384,247=>384,248=>384,249=>384, |
| 31 | 250=>384,251=>384,252=>494,253=>494,254=>494,255=>0); | 31 | 250=>384,251=>384,252=>494,253=>494,254=>494,255=>0); |
| 32 | // --- EOF --- | 32 | // --- EOF --- | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | //============================================================+ | 2 | //============================================================+ |
| 3 | // File name : makeallttffonts.php | 3 | // File name : makeallttffonts.php |
| 4 | // Begin : 2008-12-07 | 4 | // Begin : 2008-12-07 |
| 5 | // Last Update : 2010-08-08 | 5 | // Last Update : 2010-08-08 |
| 6 | // | 6 | // |
| 7 | // Description : Process all TTF files on current directory to | 7 | // Description : Process all TTF files on current directory to |
| 8 | // build TCPDF compatible font files. | 8 | // build TCPDF compatible font files. |
| 9 | // | 9 | // |
| 10 | // Author: Nicola Asuni | 10 | // Author: Nicola Asuni |
| 11 | // | 11 | // |
| 12 | // (c) Copyright: | 12 | // (c) Copyright: |
| 13 | // Nicola Asuni | 13 | // Nicola Asuni |
| 14 | // Tecnick.com S.r.l. | 14 | // Tecnick.com S.r.l. |
| 15 | // Via della Pace, 11 | 15 | // Via della Pace, 11 |
| 16 | // 09044 Quartucciu (CA) | 16 | // 09044 Quartucciu (CA) |
| 17 | // ITALY | 17 | // ITALY |
| 18 | // www.tecnick.com | 18 | // www.tecnick.com |
| 19 | // info@tecnick.com | 19 | // info@tecnick.com |
| 20 | // | 20 | // |
| 21 | // License: | 21 | // License: |
| 22 | // Copyright (C) 2004-2010 Nicola Asuni - Tecnick.com S.r.l. | 22 | // Copyright (C) 2004-2010 Nicola Asuni - Tecnick.com S.r.l. |
| 23 | // | 23 | // |
| 24 | // This file is part of TCPDF software library. | 24 | // This file is part of TCPDF software library. |
| 25 | // | 25 | // |
| 26 | // TCPDF is free software: you can redistribute it and/or modify it | 26 | // TCPDF is free software: you can redistribute it and/or modify it |
| 27 | // under the terms of the GNU Lesser General Public License as | 27 | // under the terms of the GNU Lesser General Public License as |
| 28 | // published by the Free Software Foundation, either version 3 of the | 28 | // published by the Free Software Foundation, either version 3 of the |
| 29 | // License, or (at your option) any later version. | 29 | // License, or (at your option) any later version. |
| 30 | // | 30 | // |
| 31 | // TCPDF is distributed in the hope that it will be useful, but | 31 | // TCPDF is distributed in the hope that it will be useful, but |
| 32 | // WITHOUT ANY WARRANTY; without even the implied warranty of | 32 | // WITHOUT ANY WARRANTY; without even the implied warranty of |
| 33 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 33 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| 34 | // See the GNU Lesser General Public License for more details. | 34 | // See the GNU Lesser General Public License for more details. |
| 35 | // | 35 | // |
| 36 | // You should have received a copy of the GNU Lesser General Public License | 36 | // You should have received a copy of the GNU Lesser General Public License |
| 37 | // along with TCPDF. If not, see <http://www.gnu.org/licenses/>. | 37 | // along with TCPDF. If not, see <http://www.gnu.org/licenses/>. |
| 38 | // | 38 | // |
| 39 | // See LICENSE.TXT file for more information. | 39 | // See LICENSE.TXT file for more information. |
| 40 | //============================================================+ | 40 | //============================================================+ |
| 41 | 41 | ||
| 42 | /** | 42 | /** |
| 43 | * Process all TTF files on current directory to build TCPDF compatible font files. | 43 | * Process all TTF files on current directory to build TCPDF compatible font files. |
| 44 | * @package com.tecnick.tcpdf | 44 | * @package com.tecnick.tcpdf |
| 45 | * @author Nicola Asuni | 45 | * @author Nicola Asuni |
| 46 | * @copyright Copyright © 2004-2009, Nicola Asuni - Tecnick.com S.r.l. - ITALY - www.tecnick.com - info@tecnick.com | 46 | * @copyright Copyright © 2004-2009, Nicola Asuni - Tecnick.com S.r.l. - ITALY - www.tecnick.com - info@tecnick.com |
| 47 | * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License | 47 | * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License |
| 48 | * @link www.tecnick.com | 48 | * @link www.tecnick.com |
| 49 | * @since 2008-12-07 | 49 | * @since 2008-12-07 |
| 50 | */ | 50 | */ |
| 51 | 51 | ||
| 52 | /** | 52 | /** |
| 53 | */ | 53 | */ |
| 54 | 54 | ||
| 55 | // read directory for files (only graphics files). | 55 | // read directory for files (only graphics files). |
| 56 | $handle = opendir('.'); | 56 | $handle = opendir('.'); |
| 57 | while($file = readdir($handle)) { | 57 | while($file = readdir($handle)) { |
| 58 | $path_parts = pathinfo($file); | 58 | $path_parts = pathinfo($file); |
| 59 | $file_ext = strtolower($path_parts['extension']); | 59 | $file_ext = strtolower($path_parts['extension']); |
| 60 | if ($file_ext == 'ttf') { | 60 | if ($file_ext == 'ttf') { |
| 61 | exec('./ttf2ufm -a -F '.$path_parts['basename'].''); | 61 | exec('./ttf2ufm -a -F '.$path_parts['basename'].''); |
| 62 | exec('php -q makefont.php '.$path_parts['basename'].' '.$path_parts['filename'].'.ufm'); | 62 | exec('php -q makefont.php '.$path_parts['basename'].' '.$path_parts['filename'].'.ufm'); |
| 63 | } | 63 | } |
| 64 | } | 64 | } |
| 65 | closedir($handle); | 65 | closedir($handle); |
| 66 | 66 | ||
| 67 | //============================================================+ | 67 | //============================================================+ |
| 68 | // END OF FILE | 68 | // END OF FILE |
| 69 | //============================================================+ | 69 | //============================================================+ | ... | ... |
| 1 | To embed TrueType and OpenType font files, you need to extract the | 1 | To embed TrueType and OpenType font files, you need to extract the |
| 2 | font metrics from the font files and build the required tables using | 2 | font metrics from the font files and build the required tables using |
| 3 | the utility TTF2UFM. | 3 | the utility TTF2UFM. |
| 4 | 4 | ||
| 5 | TTF2UFM is a modified version of Mark Heath's TTF 2 PT1 converter | 5 | TTF2UFM is a modified version of Mark Heath's TTF 2 PT1 converter |
| 6 | (http://ttf2pt1.sourceforge.net/) by Steven Wittens <steven@acko.net> | 6 | (http://ttf2pt1.sourceforge.net/) by Steven Wittens <steven@acko.net> |
| 7 | (http://www.acko.net/blog/ufpdf). That version has been further | 7 | (http://www.acko.net/blog/ufpdf). That version has been further |
| 8 | modified by Ulrich Telle for use with the wxWidgets component | 8 | modified by Ulrich Telle for use with the wxWidgets component |
| 9 | wxPdfDocument. | 9 | wxPdfDocument. |
| 10 | 10 | ||
| 11 | Following changes where made: | 11 | Following changes where made: |
| 12 | 12 | ||
| 13 | 1) Generated AFM files contain the glyph number for each character. | 13 | 1) Generated AFM files contain the glyph number for each character. |
| 14 | 2) Generated UFM files contain the bounding box for each character. | 14 | 2) Generated UFM files contain the bounding box for each character. |
| 15 | 3) OpenType support has been activated for the Windows binary, | 15 | 3) OpenType support has been activated for the Windows binary, |
| 16 | and the generated AFM/UFM files contain the associated | 16 | and the generated AFM/UFM files contain the associated |
| 17 | original Unicode codes for each character. | 17 | original Unicode codes for each character. | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | // core font definition file for TCPDF (www.tcpdf.org) | 2 | // core font definition file for TCPDF (www.tcpdf.org) |
| 3 | $type='core'; | 3 | $type='core'; |
| 4 | $dw=788; | 4 | $dw=788; |
| 5 | $cw=array(0=>0,1=>0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0, | 5 | $cw=array(0=>0,1=>0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0, |
| 6 | 13=>0,14=>0,15=>0,16=>0,17=>0,18=>0,19=>0,20=>0,21=>0,22=>0,23=>0,24=>0,25=>0, | 6 | 13=>0,14=>0,15=>0,16=>0,17=>0,18=>0,19=>0,20=>0,21=>0,22=>0,23=>0,24=>0,25=>0, |
| 7 | 26=>0,27=>0,28=>0,29=>0,30=>0,31=>0,32=>278,33=>974,34=>961,35=>974,36=>980, | 7 | 26=>0,27=>0,28=>0,29=>0,30=>0,31=>0,32=>278,33=>974,34=>961,35=>974,36=>980, |
| 8 | 37=>719,38=>789,39=>790,40=>791,41=>690,42=>960,43=>939,44=>549,45=>855,46=>911, | 8 | 37=>719,38=>789,39=>790,40=>791,41=>690,42=>960,43=>939,44=>549,45=>855,46=>911, |
| 9 | 47=>933,48=>911,49=>945,50=>974,51=>755,52=>846,53=>762,54=>761,55=>571,56=>677, | 9 | 47=>933,48=>911,49=>945,50=>974,51=>755,52=>846,53=>762,54=>761,55=>571,56=>677, |
| 10 | 57=>763,58=>760,59=>759,60=>754,61=>494,62=>552,63=>537,64=>577,65=>692,66=>786, | 10 | 57=>763,58=>760,59=>759,60=>754,61=>494,62=>552,63=>537,64=>577,65=>692,66=>786, |
| 11 | 67=>788,68=>788,69=>790,70=>793,71=>794,72=>816,73=>823,74=>789,75=>841,76=>823, | 11 | 67=>788,68=>788,69=>790,70=>793,71=>794,72=>816,73=>823,74=>789,75=>841,76=>823, |
| 12 | 77=>833,78=>816,79=>831,80=>923,81=>744,82=>723,83=>749,84=>790,85=>792,86=>695, | 12 | 77=>833,78=>816,79=>831,80=>923,81=>744,82=>723,83=>749,84=>790,85=>792,86=>695, |
| 13 | 87=>776,88=>768,89=>792,90=>759,91=>707,92=>708,93=>682,94=>701,95=>826,96=>815, | 13 | 87=>776,88=>768,89=>792,90=>759,91=>707,92=>708,93=>682,94=>701,95=>826,96=>815, |
| 14 | 97=>789,98=>789,99=>707,100=>687,101=>696,102=>689,103=>786,104=>787,105=>713, | 14 | 97=>789,98=>789,99=>707,100=>687,101=>696,102=>689,103=>786,104=>787,105=>713, |
| 15 | 106=>791,107=>785,108=>791,109=>873,110=>761,111=>762,112=>762,113=>759,114=>759, | 15 | 106=>791,107=>785,108=>791,109=>873,110=>761,111=>762,112=>762,113=>759,114=>759, |
| 16 | 115=>892,116=>892,117=>788,118=>784,119=>438,120=>138,121=>277,122=>415,123=>392, | 16 | 115=>892,116=>892,117=>788,118=>784,119=>438,120=>138,121=>277,122=>415,123=>392, |
| 17 | 124=>392,125=>668,126=>668,127=>0,128=>390,129=>390,130=>317,131=>317,132=>276, | 17 | 124=>392,125=>668,126=>668,127=>0,128=>390,129=>390,130=>317,131=>317,132=>276, |
| 18 | 133=>276,134=>509,135=>509,136=>410,137=>410,138=>234,139=>234,140=>334,141=>334, | 18 | 133=>276,134=>509,135=>509,136=>410,137=>410,138=>234,139=>234,140=>334,141=>334, |
| 19 | 142=>0,143=>0,144=>0,145=>0,146=>0,147=>0,148=>0,149=>0,150=>0,151=>0,152=>0, | 19 | 142=>0,143=>0,144=>0,145=>0,146=>0,147=>0,148=>0,149=>0,150=>0,151=>0,152=>0, |
| 20 | 153=>0,154=>0,155=>0,156=>0,157=>0,158=>0,159=>0,160=>0,161=>732,162=>544,163=>544, | 20 | 153=>0,154=>0,155=>0,156=>0,157=>0,158=>0,159=>0,160=>0,161=>732,162=>544,163=>544, |
| 21 | 164=>910,165=>667,166=>760,167=>760,168=>776,169=>595,170=>694,171=>626,172=>788, | 21 | 164=>910,165=>667,166=>760,167=>760,168=>776,169=>595,170=>694,171=>626,172=>788, |
| 22 | 173=>788,174=>788,175=>788,176=>788,177=>788,178=>788,179=>788,180=>788,181=>788, | 22 | 173=>788,174=>788,175=>788,176=>788,177=>788,178=>788,179=>788,180=>788,181=>788, |
| 23 | 182=>788,183=>788,184=>788,185=>788,186=>788,187=>788,188=>788,189=>788,190=>788, | 23 | 182=>788,183=>788,184=>788,185=>788,186=>788,187=>788,188=>788,189=>788,190=>788, |
| 24 | 191=>788,192=>788,193=>788,194=>788,195=>788,196=>788,197=>788,198=>788,199=>788, | 24 | 191=>788,192=>788,193=>788,194=>788,195=>788,196=>788,197=>788,198=>788,199=>788, |
| 25 | 200=>788,201=>788,202=>788,203=>788,204=>788,205=>788,206=>788,207=>788,208=>788, | 25 | 200=>788,201=>788,202=>788,203=>788,204=>788,205=>788,206=>788,207=>788,208=>788, |
| 26 | 209=>788,210=>788,211=>788,212=>894,213=>838,214=>1016,215=>458,216=>748,217=>924, | 26 | 209=>788,210=>788,211=>788,212=>894,213=>838,214=>1016,215=>458,216=>748,217=>924, |
| 27 | 218=>748,219=>918,220=>927,221=>928,222=>928,223=>834,224=>873,225=>828,226=>924, | 27 | 218=>748,219=>918,220=>927,221=>928,222=>928,223=>834,224=>873,225=>828,226=>924, |
| 28 | 227=>924,228=>917,229=>930,230=>931,231=>463,232=>883,233=>836,234=>836,235=>867, | 28 | 227=>924,228=>917,229=>930,230=>931,231=>463,232=>883,233=>836,234=>836,235=>867, |
| 29 | 236=>867,237=>696,238=>696,239=>874,240=>0,241=>874,242=>760,243=>946,244=>771, | 29 | 236=>867,237=>696,238=>696,239=>874,240=>0,241=>874,242=>760,243=>946,244=>771, |
| 30 | 245=>865,246=>771,247=>888,248=>967,249=>888,250=>831,251=>873,252=>927,253=>970, | 30 | 245=>865,246=>771,247=>888,248=>967,249=>888,250=>831,251=>873,252=>927,253=>970, |
| 31 | 254=>918,255=>0); | 31 | 254=>918,255=>0); |
| 32 | // --- EOF --- | 32 | // --- EOF --- | ... | ... |
| 1 | <?php | 1 | <?php |
| 2 | /* Mohammad Ali Golkar | 2 | /* Mohammad Ali Golkar |
| 3 | m.a.golkar@gmail.com | 3 | m.a.golkar@gmail.com |
| 4 | http://www.30minonline.com | 4 | http://www.30minonline.com |
| 5 | LICENSE : GPLv2 */ | 5 | LICENSE : GPLv2 */ |
| 6 | $type='TrueTypeUnicode'; | 6 | $type='TrueTypeUnicode'; |
| 7 | $name='ZarBold'; | 7 | $name='ZarBold'; |
| 8 | $desc=array('Ascent'=>733,'Descent'=>-317,'CapHeight'=>733,'Flags'=>32,'FontBBox'=>'[-126 -535 1164 1046]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600); | 8 | $desc=array('Ascent'=>733,'Descent'=>-317,'CapHeight'=>733,'Flags'=>32,'FontBBox'=>'[-126 -535 1164 1046]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600); |
| 9 | $up=-356; | 9 | $up=-356; |
| 10 | $ut=49; | 10 | $ut=49; |
| 11 | $dw=600; | 11 | $dw=600; |
| 12 | $cw=array( | 12 | $cw=array( |
| 13 | 0=>0,32=>227,33=>235,34=>282,35=>667,36=>458,37=>493,38=>635,39=>156,40=>303,41=>303,42=>489,43=>489,44=>237,45=>489,46=>231,47=>277, | 13 | 0=>0,32=>227,33=>235,34=>282,35=>667,36=>458,37=>493,38=>635,39=>156,40=>303,41=>303,42=>489,43=>489,44=>237,45=>489,46=>231,47=>277, |
| 14 | 48=>552,49=>552,50=>552,51=>552,52=>552,53=>552,54=>552,55=>552,56=>552,57=>552,58=>231,59=>237,60=>667,61=>489,62=>667,63=>448, | 14 | 48=>552,49=>552,50=>552,51=>552,52=>552,53=>552,54=>552,55=>552,56=>552,57=>552,58=>231,59=>237,60=>667,61=>489,62=>667,63=>448, |
| 15 | 64=>917,65=>604,66=>542,67=>615,68=>708,69=>479,70=>427,71=>667,72=>688,73=>302,74=>292,75=>583,76=>469,77=>885,78=>677,79=>729, | 15 | 64=>917,65=>604,66=>542,67=>615,68=>708,69=>479,70=>427,71=>667,72=>688,73=>302,74=>292,75=>583,76=>469,77=>885,78=>677,79=>729, |
| 16 | 80=>479,81=>729,82=>542,83=>448,84=>521,85=>677,86=>615,87=>969,88=>604,89=>583,90=>594,91=>208,92=>510,93=>208,94=>469,95=>500, | 16 | 80=>479,81=>729,82=>542,83=>448,84=>521,85=>677,86=>615,87=>969,88=>604,89=>583,90=>594,91=>208,92=>510,93=>208,94=>469,95=>500, |
| 17 | 96=>333,97=>469,98=>510,99=>448,100=>521,101=>438,102=>313,103=>500,104=>552,105=>271,106=>260,107=>500,108=>271,109=>802,110=>552,111=>490, | 17 | 96=>333,97=>469,98=>510,99=>448,100=>521,101=>438,102=>313,103=>500,104=>552,105=>271,106=>260,107=>500,108=>271,109=>802,110=>552,111=>490, |
| 18 | 112=>531,113=>521,114=>396,115=>365,116=>292,117=>552,118=>479,119=>750,120=>521,121=>469,122=>448,123=>479,124=>510,125=>479,126=>667,8218=>240, | 18 | 112=>531,113=>521,114=>396,115=>365,116=>292,117=>552,118=>479,119=>750,120=>521,121=>469,122=>448,123=>479,124=>510,125=>479,126=>667,8218=>240, |
| 19 | 402=>531,8222=>458,8230=>1000,8224=>438,8225=>438,710=>333,8240=>1010,352=>448,8249=>250,338=>865,8216=>240,8217=>240,8220=>317,8221=>317,8226=>281,8211=>500, | 19 | 402=>531,8222=>458,8230=>1000,8224=>438,8225=>438,710=>333,8240=>1010,352=>448,8249=>250,338=>865,8216=>240,8217=>240,8220=>317,8221=>317,8226=>281,8211=>500, |
| 20 | 8212=>1000,8482=>906,353=>365,8250=>250,339=>823,376=>583,160=>244,161=>317,162=>448,163=>583,164=>500,165=>583,166=>200,167=>417,168=>333,169=>765, | 20 | 8212=>1000,8482=>906,353=>365,8250=>250,339=>823,376=>583,160=>244,161=>317,162=>448,163=>583,164=>500,165=>583,166=>200,167=>417,168=>333,169=>765, |
| 21 | 170=>313,171=>417,172=>667,173=>564,174=>765,175=>333,176=>375,177=>462,178=>354,179=>354,180=>333,181=>510,182=>438,183=>198,184=>333,185=>354, | 21 | 170=>313,171=>417,172=>667,173=>564,174=>765,175=>333,176=>375,177=>462,178=>354,179=>354,180=>333,181=>510,182=>438,183=>198,184=>333,185=>354, |
| 22 | 186=>323,187=>417,188=>854,189=>854,190=>854,191=>448,192=>604,711=>333,215=>462,224=>469,226=>469,231=>448,232=>438,233=>438,234=>438,235=>438, | 22 | 186=>323,187=>417,188=>854,189=>854,190=>854,191=>448,192=>604,711=>333,215=>462,224=>469,226=>469,231=>448,232=>438,233=>438,234=>438,235=>438, |
| 23 | 238=>271,239=>271,244=>490,305=>271,247=>483,249=>552,251=>552,252=>552,255=>469,9249=>781,1548=>237,1563=>237,1567=>340,1569=>426,1570=>416,1571=>238, | 23 | 238=>271,239=>271,244=>490,305=>271,247=>483,249=>552,251=>552,252=>552,255=>469,9249=>781,1548=>237,1563=>237,1567=>340,1569=>426,1570=>416,1571=>238, |
| 24 | 1572=>429,1573=>260,1574=>817,1575=>238,1576=>853,1577=>439,1578=>853,1579=>853,1580=>720,1581=>720,1582=>720,1583=>485,1584=>485,1585=>423,1586=>423,1587=>1016, | 24 | 1572=>429,1573=>260,1574=>817,1575=>238,1576=>853,1577=>439,1578=>853,1579=>853,1580=>720,1581=>720,1582=>720,1583=>485,1584=>485,1585=>423,1586=>423,1587=>1016, |
| 25 | 1588=>1016,1589=>1128,1590=>1128,1591=>794,1592=>794,1593=>685,1594=>685,1600=>371,1601=>840,1602=>696,1603=>1148,1604=>744,1605=>514,1606=>686,1607=>439,1608=>429, | 25 | 1588=>1016,1589=>1128,1590=>1128,1591=>794,1592=>794,1593=>685,1594=>685,1600=>371,1601=>840,1602=>696,1603=>1148,1604=>744,1605=>514,1606=>686,1607=>439,1608=>429, |
| 26 | 1609=>817,1610=>817,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1632=>479,1633=>479,1634=>479,1635=>479,1636=>479,1637=>479, | 26 | 1609=>817,1610=>817,1611=>0,1612=>0,1613=>0,1614=>0,1615=>0,1616=>0,1617=>0,1618=>0,1632=>479,1633=>479,1634=>479,1635=>479,1636=>479,1637=>479, |
| 27 | 1638=>479,1639=>479,1640=>479,1641=>483,1642=>493,1645=>563,1648=>227,1649=>363,1652=>227,1662=>853,1670=>720,1688=>423,1700=>840,1705=>1148,1711=>1149,1740=>817, | 27 | 1638=>479,1639=>479,1640=>479,1641=>483,1642=>493,1645=>563,1648=>227,1649=>363,1652=>227,1662=>853,1670=>720,1688=>423,1700=>840,1705=>1148,1711=>1149,1740=>817, |
| 28 | 1749=>439,1764=>227,1776=>479,1777=>479,1778=>479,1779=>479,1780=>479,1781=>479,1782=>479,1783=>479,1784=>479,1785=>483,8204=>22,8205=>22,8206=>22,8207=>22, | 28 | 1749=>439,1764=>227,1776=>479,1777=>479,1778=>479,1779=>479,1780=>479,1781=>479,1782=>479,1783=>479,1784=>479,1785=>483,8204=>22,8205=>22,8206=>22,8207=>22, |
| 29 | 59424=>227,59425=>227,59426=>227,59427=>227,59428=>227,59429=>227,59430=>227,59431=>227,59432=>227,59433=>227,59434=>227,59435=>227,59436=>227,59416=>227,59437=>227,59442=>227, | 29 | 59424=>227,59425=>227,59426=>227,59427=>227,59428=>227,59429=>227,59430=>227,59431=>227,59432=>227,59433=>227,59434=>227,59435=>227,59436=>227,59416=>227,59437=>227,59442=>227, |
| 30 | 59443=>227,59444=>227,59445=>227,59446=>227,64336=>363,64337=>263,64342=>853,64343=>967,64344=>267,64345=>271,64362=>840,64363=>959,64364=>305,64365=>341,64378=>720,64379=>725, | 30 | 59443=>227,59444=>227,59445=>227,59446=>227,64336=>363,64337=>263,64342=>853,64343=>967,64344=>267,64345=>271,64362=>840,64363=>959,64364=>305,64365=>341,64378=>720,64379=>725, |
| 31 | 64380=>630,64381=>652,64394=>423,64395=>450,64398=>1148,64399=>1089,64400=>522,64401=>461,64402=>1149,64403=>1084,64404=>525,64405=>462,64508=>817,64509=>784,64606=>227,64607=>227, | 31 | 64380=>630,64381=>652,64394=>423,64395=>450,64398=>1148,64399=>1089,64400=>522,64401=>461,64402=>1149,64403=>1084,64404=>525,64405=>462,64508=>817,64509=>784,64606=>227,64607=>227, |
| 32 | 64608=>227,64609=>227,64610=>227,64754=>371,64755=>371,64756=>371,64828=>331,64829=>276,64830=>303,64831=>303,65010=>866,65136=>227,65137=>371,65138=>227,65140=>227,65142=>227, | 32 | 64608=>227,64609=>227,64610=>227,64754=>371,64755=>371,64756=>371,64828=>331,64829=>276,64830=>303,64831=>303,65010=>866,65136=>227,65137=>371,65138=>227,65140=>227,65142=>227, |
| 33 | 65143=>371,65144=>227,65145=>371,65146=>227,65147=>371,65148=>227,65149=>371,65150=>227,65151=>371,65152=>426,65153=>416,65154=>354,65155=>238,65156=>282,65157=>429,65158=>507, | 33 | 65143=>371,65144=>227,65145=>371,65146=>227,65147=>371,65148=>227,65149=>371,65150=>227,65151=>371,65152=>426,65153=>416,65154=>354,65155=>238,65156=>282,65157=>429,65158=>507, |
| 34 | 65159=>260,65160=>286,65161=>817,65162=>784,65163=>190,65164=>276,65165=>238,65166=>263,65167=>853,65168=>967,65169=>186,65170=>271,65171=>439,65172=>452,65173=>853,65174=>967, | 34 | 65159=>260,65160=>286,65161=>817,65162=>784,65163=>190,65164=>276,65165=>238,65166=>263,65167=>853,65168=>967,65169=>186,65170=>271,65171=>439,65172=>452,65173=>853,65174=>967, |
| 35 | 65175=>256,65176=>271,65177=>853,65178=>967,65179=>267,65180=>271,65181=>720,65182=>725,65183=>630,65184=>652,65185=>720,65186=>725,65187=>630,65188=>652,65189=>720,65190=>725, | 35 | 65175=>256,65176=>271,65177=>853,65178=>967,65179=>267,65180=>271,65181=>720,65182=>725,65183=>630,65184=>652,65185=>720,65186=>725,65187=>630,65188=>652,65189=>720,65190=>725, |
| 36 | 65191=>630,65192=>652,65193=>485,65194=>608,65195=>485,65196=>608,65197=>423,65198=>450,65199=>423,65200=>450,65201=>1016,65202=>1041,65203=>498,65204=>475,65205=>1016,65206=>1041, | 36 | 65191=>630,65192=>652,65193=>485,65194=>608,65195=>485,65196=>608,65197=>423,65198=>450,65199=>423,65200=>450,65201=>1016,65202=>1041,65203=>498,65204=>475,65205=>1016,65206=>1041, |
| 37 | 65207=>498,65208=>475,65209=>1128,65210=>1150,65211=>633,65212=>655,65213=>1128,65214=>1150,65215=>633,65216=>655,65217=>794,65218=>814,65219=>566,65220=>588,65221=>794,65222=>814, | 37 | 65207=>498,65208=>475,65209=>1128,65210=>1150,65211=>633,65212=>655,65213=>1128,65214=>1150,65215=>633,65216=>655,65217=>794,65218=>814,65219=>566,65220=>588,65221=>794,65222=>814, |
| 38 | 65223=>566,65224=>588,65225=>685,65226=>655,65227=>414,65228=>330,65229=>685,65230=>655,65231=>414,65232=>330,65233=>840,65234=>959,65235=>305,65236=>341,65237=>696,65238=>780, | 38 | 65223=>566,65224=>588,65225=>685,65226=>655,65227=>414,65228=>330,65229=>685,65230=>655,65231=>414,65232=>330,65233=>840,65234=>959,65235=>305,65236=>341,65237=>696,65238=>780, |
| 39 | 65239=>305,65240=>341,65241=>1148,65242=>1089,65243=>522,65244=>461,65245=>744,65246=>741,65247=>202,65248=>259,65249=>514,65250=>585,65251=>345,65252=>477,65253=>686,65254=>764, | 39 | 65239=>305,65240=>341,65241=>1148,65242=>1089,65243=>522,65244=>461,65245=>744,65246=>741,65247=>202,65248=>259,65249=>514,65250=>585,65251=>345,65252=>477,65253=>686,65254=>764, |
| 40 | 65255=>186,65256=>271,65257=>439,65258=>452,65259=>501,65260=>381,65261=>429,65262=>507,65263=>817,65264=>784,65265=>817,65266=>784,64510=>265,64511=>271,65269=>610,65270=>652, | 40 | 65255=>186,65256=>271,65257=>439,65258=>452,65259=>501,65260=>381,65261=>429,65262=>507,65263=>817,65264=>784,65265=>817,65266=>784,64510=>265,64511=>271,65269=>610,65270=>652, |
| 41 | 65271=>539,65272=>611,65273=>539,65274=>611,65275=>539,65276=>611,65279=>0,64486=>408,64487=>408); | 41 | 65271=>539,65272=>611,65273=>539,65274=>611,65275=>539,65276=>611,65279=>0,64486=>408,64487=>408); |
| 42 | $enc=''; | 42 | $enc=''; |
| 43 | $diff=''; | 43 | $diff=''; |
| 44 | $file='zarbold.z'; | 44 | $file='zarbold.z'; |
| 45 | $ctg='zarbold.ctg.z'; | 45 | $ctg='zarbold.ctg.z'; |
| 46 | $originalsize=73296; | 46 | $originalsize=73296; |
| 47 | // --- EOF --- | 47 | // --- EOF --- | ... | ... |
| 1 | %!PS-Adobe-3.0 EPSF-3.0 | 1 | %!PS-Adobe-3.0 EPSF-3.0 |
| 2 | %%Creator: Adobe Illustrator(TM) 3.2 | 2 | %%Creator: Adobe Illustrator(TM) 3.2 |
| 3 | %%AI8_CreatorVersion: 12.0.0 | 3 | %%AI8_CreatorVersion: 12.0.0 |
| 4 | %%For: (fluxus) (x) | 4 | %%For: (fluxus) (x) |
| 5 | %%Title: (bug.eps) | 5 | %%Title: (bug.eps) |
| 6 | %%CreationDate: 4/15/2006 11:11 PM | 6 | %%CreationDate: 4/15/2006 11:11 PM |
| 7 | %%BoundingBox: -2 747 53 843 | 7 | %%BoundingBox: -2 747 53 843 |
| 8 | % -2 747 53 843 | 8 | % -2 747 53 843 |
| 9 | %%DocumentProcessColors: Cyan Magenta Yellow Black | 9 | %%DocumentProcessColors: Cyan Magenta Yellow Black |
| 10 | %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 | 10 | %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 |
| 11 | %%+ procset Adobe_cmykcolor 1.1 0 | 11 | %%+ procset Adobe_cmykcolor 1.1 0 |
| 12 | %%+ procset Adobe_cshow 1.1 0 | 12 | %%+ procset Adobe_cshow 1.1 0 |
| 13 | %%+ procset Adobe_customcolor 1.0 0 | 13 | %%+ procset Adobe_customcolor 1.0 0 |
| 14 | %%+ procset Adobe_pattern_AI3 1.0 0 | 14 | %%+ procset Adobe_pattern_AI3 1.0 0 |
| 15 | %%+ procset Adobe_Illustrator_AI3 1.0 1 | 15 | %%+ procset Adobe_Illustrator_AI3 1.0 1 |
| 16 | %AI3_ColorUsage: Color | 16 | %AI3_ColorUsage: Color |
| 17 | %AI3_IncludePlacedImages | 17 | %AI3_IncludePlacedImages |
| 18 | %%CMYKCustomColor: 1 1 1 1 ([Registration]) | 18 | %%CMYKCustomColor: 1 1 1 1 ([Registration]) |
| 19 | %AI3_TemplateBox: 298.5 420.3896 298.5 420.3896 | 19 | %AI3_TemplateBox: 298.5 420.3896 298.5 420.3896 |
| 20 | %AI3_TileBox: 0.157715 0.044861 595.1177 841.9648 | 20 | %AI3_TileBox: 0.157715 0.044861 595.1177 841.9648 |
| 21 | %AI3_DocumentPreview: Header | 21 | %AI3_DocumentPreview: Header |
| 22 | %%PageOrigin:-32 11.8896 | 22 | %%PageOrigin:-32 11.8896 |
| 23 | %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 | 23 | %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 |
| 24 | %AI9_Flatten: 1 | 24 | %AI9_Flatten: 1 |
| 25 | %AI12_CMSettings: 00.MS | 25 | %AI12_CMSettings: 00.MS |
| 26 | %%EndComments | 26 | %%EndComments |
| 27 | %%BeginProlog | 27 | %%BeginProlog |
| 28 | %%BeginResource: procset Adobe_packedarray 2.0 0 | 28 | %%BeginResource: procset Adobe_packedarray 2.0 0 |
| 29 | %%Title: (Packed Array Operators) | 29 | %%Title: (Packed Array Operators) |
| 30 | %%Version: 2.0 0 | 30 | %%Version: 2.0 0 |
| 31 | %%CreationDate: (8/2/90) () | 31 | %%CreationDate: (8/2/90) () |
| 32 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) | 32 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) |
| 33 | userdict /Adobe_packedarray 5 dict dup begin put | 33 | userdict /Adobe_packedarray 5 dict dup begin put |
| 34 | /initialize | 34 | /initialize |
| 35 | { | 35 | { |
| 36 | /packedarray where | 36 | /packedarray where |
| 37 | { | 37 | { |
| 38 | pop | 38 | pop |
| 39 | } | 39 | } |
| 40 | { | 40 | { |
| 41 | Adobe_packedarray begin | 41 | Adobe_packedarray begin |
| 42 | Adobe_packedarray | 42 | Adobe_packedarray |
| 43 | { | 43 | { |
| 44 | dup xcheck | 44 | dup xcheck |
| 45 | { | 45 | { |
| 46 | bind | 46 | bind |
| 47 | } if | 47 | } if |
| 48 | userdict 3 1 roll put | 48 | userdict 3 1 roll put |
| 49 | } forall | 49 | } forall |
| 50 | end | 50 | end |
| 51 | } ifelse | 51 | } ifelse |
| 52 | } def | 52 | } def |
| 53 | /terminate | 53 | /terminate |
| 54 | { | 54 | { |
| 55 | } def | 55 | } def |
| 56 | /packedarray | 56 | /packedarray |
| 57 | { | 57 | { |
| 58 | array astore readonly | 58 | array astore readonly |
| 59 | } def | 59 | } def |
| 60 | /setpacking | 60 | /setpacking |
| 61 | { | 61 | { |
| 62 | pop | 62 | pop |
| 63 | } def | 63 | } def |
| 64 | /currentpacking | 64 | /currentpacking |
| 65 | { | 65 | { |
| 66 | false | 66 | false |
| 67 | } def | 67 | } def |
| 68 | currentdict readonly pop end | 68 | currentdict readonly pop end |
| 69 | %%EndResource | 69 | %%EndResource |
| 70 | Adobe_packedarray /initialize get exec | 70 | Adobe_packedarray /initialize get exec |
| 71 | %%BeginResource: procset Adobe_cmykcolor 1.1 0 | 71 | %%BeginResource: procset Adobe_cmykcolor 1.1 0 |
| 72 | %%Title: (CMYK Color Operators) | 72 | %%Title: (CMYK Color Operators) |
| 73 | %%Version: 1.1 0 | 73 | %%Version: 1.1 0 |
| 74 | %%CreationDate: (1/23/89) () | 74 | %%CreationDate: (1/23/89) () |
| 75 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) | 75 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) |
| 76 | currentpacking true setpacking | 76 | currentpacking true setpacking |
| 77 | userdict /Adobe_cmykcolor 4 dict dup begin put | 77 | userdict /Adobe_cmykcolor 4 dict dup begin put |
| 78 | /initialize | 78 | /initialize |
| 79 | { | 79 | { |
| 80 | /setcmykcolor where | 80 | /setcmykcolor where |
| 81 | { | 81 | { |
| 82 | pop | 82 | pop |
| 83 | } | 83 | } |
| 84 | { | 84 | { |
| 85 | userdict /Adobe_cmykcolor_vars 2 dict dup begin put | 85 | userdict /Adobe_cmykcolor_vars 2 dict dup begin put |
| 86 | /_setrgbcolor | 86 | /_setrgbcolor |
| 87 | /setrgbcolor load def | 87 | /setrgbcolor load def |
| 88 | /_currentrgbcolor | 88 | /_currentrgbcolor |
| 89 | /currentrgbcolor load def | 89 | /currentrgbcolor load def |
| 90 | Adobe_cmykcolor begin | 90 | Adobe_cmykcolor begin |
| 91 | Adobe_cmykcolor | 91 | Adobe_cmykcolor |
| 92 | { | 92 | { |
| 93 | dup xcheck | 93 | dup xcheck |
| 94 | { | 94 | { |
| 95 | bind | 95 | bind |
| 96 | } if | 96 | } if |
| 97 | pop pop | 97 | pop pop |
| 98 | } forall | 98 | } forall |
| 99 | end | 99 | end |
| 100 | end | 100 | end |
| 101 | Adobe_cmykcolor begin | 101 | Adobe_cmykcolor begin |
| 102 | } ifelse | 102 | } ifelse |
| 103 | } def | 103 | } def |
| 104 | /terminate | 104 | /terminate |
| 105 | { | 105 | { |
| 106 | currentdict Adobe_cmykcolor eq | 106 | currentdict Adobe_cmykcolor eq |
| 107 | { | 107 | { |
| 108 | end | 108 | end |
| 109 | } if | 109 | } if |
| 110 | } def | 110 | } def |
| 111 | /setcmykcolor | 111 | /setcmykcolor |
| 112 | { | 112 | { |
| 113 | 1 sub 4 1 roll | 113 | 1 sub 4 1 roll |
| 114 | 3 | 114 | 3 |
| 115 | { | 115 | { |
| 116 | 3 index add neg dup 0 lt | 116 | 3 index add neg dup 0 lt |
| 117 | { | 117 | { |
| 118 | pop 0 | 118 | pop 0 |
| 119 | } if | 119 | } if |
| 120 | 3 1 roll | 120 | 3 1 roll |
| 121 | } repeat | 121 | } repeat |
| 122 | Adobe_cmykcolor_vars /_setrgbcolor get exec | 122 | Adobe_cmykcolor_vars /_setrgbcolor get exec |
| 123 | pop | 123 | pop |
| 124 | } def | 124 | } def |
| 125 | /currentcmykcolor | 125 | /currentcmykcolor |
| 126 | { | 126 | { |
| 127 | Adobe_cmykcolor_vars /_currentrgbcolor get exec | 127 | Adobe_cmykcolor_vars /_currentrgbcolor get exec |
| 128 | 3 | 128 | 3 |
| 129 | { | 129 | { |
| 130 | 1 sub neg 3 1 roll | 130 | 1 sub neg 3 1 roll |
| 131 | } repeat | 131 | } repeat |
| 132 | 0 | 132 | 0 |
| 133 | } def | 133 | } def |
| 134 | currentdict readonly pop end | 134 | currentdict readonly pop end |
| 135 | setpacking | 135 | setpacking |
| 136 | %%EndResource | 136 | %%EndResource |
| 137 | %%BeginResource: procset Adobe_cshow 1.1 0 | 137 | %%BeginResource: procset Adobe_cshow 1.1 0 |
| 138 | %%Title: (cshow Operator) | 138 | %%Title: (cshow Operator) |
| 139 | %%Version: 1.1 0 | 139 | %%Version: 1.1 0 |
| 140 | %%CreationDate: (1/23/89) () | 140 | %%CreationDate: (1/23/89) () |
| 141 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) | 141 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) |
| 142 | currentpacking true setpacking | 142 | currentpacking true setpacking |
| 143 | userdict /Adobe_cshow 3 dict dup begin put | 143 | userdict /Adobe_cshow 3 dict dup begin put |
| 144 | /initialize | 144 | /initialize |
| 145 | { | 145 | { |
| 146 | /cshow where | 146 | /cshow where |
| 147 | { | 147 | { |
| 148 | pop | 148 | pop |
| 149 | } | 149 | } |
| 150 | { | 150 | { |
| 151 | userdict /Adobe_cshow_vars 1 dict dup begin put | 151 | userdict /Adobe_cshow_vars 1 dict dup begin put |
| 152 | /_cshow | 152 | /_cshow |
| 153 | {} def | 153 | {} def |
| 154 | Adobe_cshow begin | 154 | Adobe_cshow begin |
| 155 | Adobe_cshow | 155 | Adobe_cshow |
| 156 | { | 156 | { |
| 157 | dup xcheck | 157 | dup xcheck |
| 158 | { | 158 | { |
| 159 | bind | 159 | bind |
| 160 | } if | 160 | } if |
| 161 | userdict 3 1 roll put | 161 | userdict 3 1 roll put |
| 162 | } forall | 162 | } forall |
| 163 | end | 163 | end |
| 164 | end | 164 | end |
| 165 | } ifelse | 165 | } ifelse |
| 166 | } def | 166 | } def |
| 167 | /terminate | 167 | /terminate |
| 168 | { | 168 | { |
| 169 | } def | 169 | } def |
| 170 | /cshow | 170 | /cshow |
| 171 | { | 171 | { |
| 172 | exch | 172 | exch |
| 173 | Adobe_cshow_vars | 173 | Adobe_cshow_vars |
| 174 | exch /_cshow | 174 | exch /_cshow |
| 175 | exch put | 175 | exch put |
| 176 | { | 176 | { |
| 177 | 0 0 Adobe_cshow_vars /_cshow get exec | 177 | 0 0 Adobe_cshow_vars /_cshow get exec |
| 178 | } forall | 178 | } forall |
| 179 | } def | 179 | } def |
| 180 | currentdict readonly pop end | 180 | currentdict readonly pop end |
| 181 | setpacking | 181 | setpacking |
| 182 | %%EndResource | 182 | %%EndResource |
| 183 | %%BeginResource: procset Adobe_customcolor 1.0 0 | 183 | %%BeginResource: procset Adobe_customcolor 1.0 0 |
| 184 | %%Title: (Custom Color Operators) | 184 | %%Title: (Custom Color Operators) |
| 185 | %%Version: 1.0 0 | 185 | %%Version: 1.0 0 |
| 186 | %%CreationDate: (5/9/88) () | 186 | %%CreationDate: (5/9/88) () |
| 187 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) | 187 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) |
| 188 | currentpacking true setpacking | 188 | currentpacking true setpacking |
| 189 | userdict /Adobe_customcolor 5 dict dup begin put | 189 | userdict /Adobe_customcolor 5 dict dup begin put |
| 190 | /initialize | 190 | /initialize |
| 191 | { | 191 | { |
| 192 | /setcustomcolor where | 192 | /setcustomcolor where |
| 193 | { | 193 | { |
| 194 | pop | 194 | pop |
| 195 | } | 195 | } |
| 196 | { | 196 | { |
| 197 | Adobe_customcolor begin | 197 | Adobe_customcolor begin |
| 198 | Adobe_customcolor | 198 | Adobe_customcolor |
| 199 | { | 199 | { |
| 200 | dup xcheck | 200 | dup xcheck |
| 201 | { | 201 | { |
| 202 | bind | 202 | bind |
| 203 | } if | 203 | } if |
| 204 | pop pop | 204 | pop pop |
| 205 | } forall | 205 | } forall |
| 206 | end | 206 | end |
| 207 | Adobe_customcolor begin | 207 | Adobe_customcolor begin |
| 208 | } ifelse | 208 | } ifelse |
| 209 | } def | 209 | } def |
| 210 | /terminate | 210 | /terminate |
| 211 | { | 211 | { |
| 212 | currentdict Adobe_customcolor eq | 212 | currentdict Adobe_customcolor eq |
| 213 | { | 213 | { |
| 214 | end | 214 | end |
| 215 | } if | 215 | } if |
| 216 | } def | 216 | } def |
| 217 | /findcmykcustomcolor | 217 | /findcmykcustomcolor |
| 218 | { | 218 | { |
| 219 | 5 packedarray | 219 | 5 packedarray |
| 220 | } def | 220 | } def |
| 221 | /setcustomcolor | 221 | /setcustomcolor |
| 222 | { | 222 | { |
| 223 | exch | 223 | exch |
| 224 | aload pop pop | 224 | aload pop pop |
| 225 | 4 | 225 | 4 |
| 226 | { | 226 | { |
| 227 | 4 index mul 4 1 roll | 227 | 4 index mul 4 1 roll |
| 228 | } repeat | 228 | } repeat |
| 229 | 5 -1 roll pop | 229 | 5 -1 roll pop |
| 230 | setcmykcolor | 230 | setcmykcolor |
| 231 | } def | 231 | } def |
| 232 | /setoverprint | 232 | /setoverprint |
| 233 | { | 233 | { |
| 234 | pop | 234 | pop |
| 235 | } def | 235 | } def |
| 236 | currentdict readonly pop end | 236 | currentdict readonly pop end |
| 237 | setpacking | 237 | setpacking |
| 238 | %%EndResource | 238 | %%EndResource |
| 239 | %%BeginResource: procset Adobe_pattern_AI3 1.1 0 | 239 | %%BeginResource: procset Adobe_pattern_AI3 1.1 0 |
| 240 | %%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) | 240 | %%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) |
| 241 | %%Version: 1.1 0 | 241 | %%Version: 1.1 0 |
| 242 | %%CreationDate: (7/21/89) () | 242 | %%CreationDate: (7/21/89) () |
| 243 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) | 243 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) |
| 244 | currentpacking true setpacking | 244 | currentpacking true setpacking |
| 245 | userdict /Adobe_pattern_AI3 16 dict dup begin put | 245 | userdict /Adobe_pattern_AI3 16 dict dup begin put |
| 246 | /initialize | 246 | /initialize |
| 247 | { | 247 | { |
| 248 | /definepattern where | 248 | /definepattern where |
| 249 | { | 249 | { |
| 250 | pop | 250 | pop |
| 251 | } | 251 | } |
| 252 | { | 252 | { |
| 253 | Adobe_pattern_AI3 begin | 253 | Adobe_pattern_AI3 begin |
| 254 | Adobe_pattern_AI3 | 254 | Adobe_pattern_AI3 |
| 255 | { | 255 | { |
| 256 | dup xcheck | 256 | dup xcheck |
| 257 | { | 257 | { |
| 258 | bind | 258 | bind |
| 259 | } if | 259 | } if |
| 260 | pop pop | 260 | pop pop |
| 261 | } forall | 261 | } forall |
| 262 | mark | 262 | mark |
| 263 | cachestatus 7 1 roll pop pop pop pop exch pop exch | 263 | cachestatus 7 1 roll pop pop pop pop exch pop exch |
| 264 | { | 264 | { |
| 265 | { | 265 | { |
| 266 | 10000 add | 266 | 10000 add |
| 267 | dup 2 index gt | 267 | dup 2 index gt |
| 268 | { | 268 | { |
| 269 | exit | 269 | exit |
| 270 | } if | 270 | } if |
| 271 | dup setcachelimit | 271 | dup setcachelimit |
| 272 | } loop | 272 | } loop |
| 273 | } stopped | 273 | } stopped |
| 274 | cleartomark | 274 | cleartomark |
| 275 | } ifelse | 275 | } ifelse |
| 276 | } def | 276 | } def |
| 277 | /terminate | 277 | /terminate |
| 278 | { | 278 | { |
| 279 | currentdict Adobe_pattern_AI3 eq | 279 | currentdict Adobe_pattern_AI3 eq |
| 280 | { | 280 | { |
| 281 | end | 281 | end |
| 282 | } if | 282 | } if |
| 283 | } def | 283 | } def |
| 284 | errordict | 284 | errordict |
| 285 | /nocurrentpoint | 285 | /nocurrentpoint |
| 286 | { | 286 | { |
| 287 | pop | 287 | pop |
| 288 | stop | 288 | stop |
| 289 | } put | 289 | } put |
| 290 | errordict | 290 | errordict |
| 291 | /invalidaccess | 291 | /invalidaccess |
| 292 | { | 292 | { |
| 293 | pop | 293 | pop |
| 294 | stop | 294 | stop |
| 295 | } put | 295 | } put |
| 296 | /patternencoding | 296 | /patternencoding |
| 297 | 256 array def | 297 | 256 array def |
| 298 | 0 1 255 | 298 | 0 1 255 |
| 299 | { | 299 | { |
| 300 | patternencoding exch ( ) 2 copy exch 0 exch put cvn put | 300 | patternencoding exch ( ) 2 copy exch 0 exch put cvn put |
| 301 | } for | 301 | } for |
| 302 | /definepattern | 302 | /definepattern |
| 303 | { | 303 | { |
| 304 | 17 dict begin | 304 | 17 dict begin |
| 305 | /uniform exch def | 305 | /uniform exch def |
| 306 | /cache exch def | 306 | /cache exch def |
| 307 | /key exch def | 307 | /key exch def |
| 308 | /procarray exch def | 308 | /procarray exch def |
| 309 | /mtx exch matrix invertmatrix def | 309 | /mtx exch matrix invertmatrix def |
| 310 | /height exch def | 310 | /height exch def |
| 311 | /width exch def | 311 | /width exch def |
| 312 | /ctm matrix currentmatrix def | 312 | /ctm matrix currentmatrix def |
| 313 | /ptm matrix def | 313 | /ptm matrix def |
| 314 | /str 32 string def | 314 | /str 32 string def |
| 315 | /slice 9 dict def | 315 | /slice 9 dict def |
| 316 | slice /s 1 put | 316 | slice /s 1 put |
| 317 | slice /q 256 procarray length div sqrt floor cvi put | 317 | slice /q 256 procarray length div sqrt floor cvi put |
| 318 | slice /b 0 put | 318 | slice /b 0 put |
| 319 | /FontBBox [0 0 0 0] def | 319 | /FontBBox [0 0 0 0] def |
| 320 | /FontMatrix mtx matrix copy def | 320 | /FontMatrix mtx matrix copy def |
| 321 | /Encoding patternencoding def | 321 | /Encoding patternencoding def |
| 322 | /FontType 3 def | 322 | /FontType 3 def |
| 323 | /BuildChar | 323 | /BuildChar |
| 324 | { | 324 | { |
| 325 | exch | 325 | exch |
| 326 | begin | 326 | begin |
| 327 | /setstrokeadjust where {pop true setstrokeadjust} if | 327 | /setstrokeadjust where {pop true setstrokeadjust} if |
| 328 | slice begin | 328 | slice begin |
| 329 | dup q dup mul mod s idiv /i exch def | 329 | dup q dup mul mod s idiv /i exch def |
| 330 | dup q dup mul mod s mod /j exch def | 330 | dup q dup mul mod s mod /j exch def |
| 331 | q dup mul idiv procarray exch get | 331 | q dup mul idiv procarray exch get |
| 332 | /xl j width s div mul def | 332 | /xl j width s div mul def |
| 333 | /xg j 1 add width s div mul def | 333 | /xg j 1 add width s div mul def |
| 334 | /yl i height s div mul def | 334 | /yl i height s div mul def |
| 335 | /yg i 1 add height s div mul def | 335 | /yg i 1 add height s div mul def |
| 336 | uniform | 336 | uniform |
| 337 | { | 337 | { |
| 338 | 1 1 | 338 | 1 1 |
| 339 | } | 339 | } |
| 340 | { | 340 | { |
| 341 | width 0 dtransform | 341 | width 0 dtransform |
| 342 | dup mul exch dup mul add sqrt dup 1 add exch div | 342 | dup mul exch dup mul add sqrt dup 1 add exch div |
| 343 | 0 height dtransform | 343 | 0 height dtransform |
| 344 | dup mul exch dup mul add sqrt dup 1 add exch div | 344 | dup mul exch dup mul add sqrt dup 1 add exch div |
| 345 | } ifelse | 345 | } ifelse |
| 346 | width 0 cache | 346 | width 0 cache |
| 347 | { | 347 | { |
| 348 | xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul | 348 | xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul |
| 349 | setcachedevice | 349 | setcachedevice |
| 350 | } | 350 | } |
| 351 | { | 351 | { |
| 352 | setcharwidth | 352 | setcharwidth |
| 353 | } ifelse | 353 | } ifelse |
| 354 | gsave | 354 | gsave |
| 355 | scale | 355 | scale |
| 356 | newpath | 356 | newpath |
| 357 | xl yl moveto | 357 | xl yl moveto |
| 358 | xg yl lineto | 358 | xg yl lineto |
| 359 | xg yg lineto | 359 | xg yg lineto |
| 360 | xl yg lineto | 360 | xl yg lineto |
| 361 | closepath | 361 | closepath |
| 362 | clip | 362 | clip |
| 363 | newpath | 363 | newpath |
| 364 | end | 364 | end |
| 365 | end | 365 | end |
| 366 | exec | 366 | exec |
| 367 | grestore | 367 | grestore |
| 368 | } def | 368 | } def |
| 369 | key currentdict definefont | 369 | key currentdict definefont |
| 370 | end | 370 | end |
| 371 | } def | 371 | } def |
| 372 | /patterncachesize | 372 | /patterncachesize |
| 373 | { | 373 | { |
| 374 | gsave | 374 | gsave |
| 375 | newpath | 375 | newpath |
| 376 | 0 0 moveto | 376 | 0 0 moveto |
| 377 | width 0 lineto | 377 | width 0 lineto |
| 378 | width height lineto | 378 | width height lineto |
| 379 | 0 height lineto | 379 | 0 height lineto |
| 380 | closepath | 380 | closepath |
| 381 | patternmatrix setmatrix | 381 | patternmatrix setmatrix |
| 382 | pathbbox | 382 | pathbbox |
| 383 | exch ceiling 4 -1 roll floor sub 3 1 roll | 383 | exch ceiling 4 -1 roll floor sub 3 1 roll |
| 384 | ceiling exch floor sub | 384 | ceiling exch floor sub |
| 385 | mul 1 add | 385 | mul 1 add |
| 386 | grestore | 386 | grestore |
| 387 | } def | 387 | } def |
| 388 | /patterncachelimit | 388 | /patterncachelimit |
| 389 | { | 389 | { |
| 390 | cachestatus 7 1 roll 6 npop 8 mul | 390 | cachestatus 7 1 roll 6 npop 8 mul |
| 391 | } def | 391 | } def |
| 392 | /patternpath | 392 | /patternpath |
| 393 | { | 393 | { |
| 394 | exch dup begin setfont | 394 | exch dup begin setfont |
| 395 | ctm setmatrix | 395 | ctm setmatrix |
| 396 | concat | 396 | concat |
| 397 | slice exch /b exch slice /q get dup mul mul put | 397 | slice exch /b exch slice /q get dup mul mul put |
| 398 | FontMatrix concat | 398 | FontMatrix concat |
| 399 | uniform | 399 | uniform |
| 400 | { | 400 | { |
| 401 | width 0 dtransform round width div exch round width div exch | 401 | width 0 dtransform round width div exch round width div exch |
| 402 | 0 height dtransform round height div exch height div exch | 402 | 0 height dtransform round height div exch height div exch |
| 403 | 0 0 transform round exch round exch | 403 | 0 0 transform round exch round exch |
| 404 | ptm astore setmatrix | 404 | ptm astore setmatrix |
| 405 | } | 405 | } |
| 406 | { | 406 | { |
| 407 | ptm currentmatrix pop | 407 | ptm currentmatrix pop |
| 408 | } ifelse | 408 | } ifelse |
| 409 | {currentpoint} stopped not | 409 | {currentpoint} stopped not |
| 410 | { | 410 | { |
| 411 | 2 npop | 411 | 2 npop |
| 412 | pathbbox | 412 | pathbbox |
| 413 | true | 413 | true |
| 414 | 4 index 3 index eq | 414 | 4 index 3 index eq |
| 415 | 4 index 3 index eq | 415 | 4 index 3 index eq |
| 416 | and | 416 | and |
| 417 | { | 417 | { |
| 418 | pop false | 418 | pop false |
| 419 | { | 419 | { |
| 420 | {2 npop} | 420 | {2 npop} |
| 421 | {3 npop true} | 421 | {3 npop true} |
| 422 | {7 npop true} | 422 | {7 npop true} |
| 423 | {pop true} | 423 | {pop true} |
| 424 | pathforall | 424 | pathforall |
| 425 | } stopped | 425 | } stopped |
| 426 | { | 426 | { |
| 427 | 5 npop true | 427 | 5 npop true |
| 428 | } if | 428 | } if |
| 429 | } if | 429 | } if |
| 430 | { | 430 | { |
| 431 | height div ceiling height mul 4 1 roll | 431 | height div ceiling height mul 4 1 roll |
| 432 | width div ceiling width mul 4 1 roll | 432 | width div ceiling width mul 4 1 roll |
| 433 | height div floor height mul 4 1 roll | 433 | height div floor height mul 4 1 roll |
| 434 | width div floor width mul 4 1 roll | 434 | width div floor width mul 4 1 roll |
| 435 | 2 index sub height div ceiling cvi exch | 435 | 2 index sub height div ceiling cvi exch |
| 436 | 3 index sub width div ceiling cvi exch | 436 | 3 index sub width div ceiling cvi exch |
| 437 | 4 2 roll moveto | 437 | 4 2 roll moveto |
| 438 | FontMatrix mtx invertmatrix | 438 | FontMatrix mtx invertmatrix |
| 439 | dup dup 4 get exch 5 get rmoveto | 439 | dup dup 4 get exch 5 get rmoveto |
| 440 | ptm ptm concatmatrix pop | 440 | ptm ptm concatmatrix pop |
| 441 | slice /s | 441 | slice /s |
| 442 | patterncachesize patterncachelimit div ceiling sqrt ceiling cvi | 442 | patterncachesize patterncachelimit div ceiling sqrt ceiling cvi |
| 443 | dup slice /q get gt | 443 | dup slice /q get gt |
| 444 | { | 444 | { |
| 445 | pop slice /q get | 445 | pop slice /q get |
| 446 | } if | 446 | } if |
| 447 | put | 447 | put |
| 448 | 0 1 slice /s get dup mul 1 sub | 448 | 0 1 slice /s get dup mul 1 sub |
| 449 | { | 449 | { |
| 450 | slice /b get add | 450 | slice /b get add |
| 451 | gsave | 451 | gsave |
| 452 | 0 1 str length 1 sub | 452 | 0 1 str length 1 sub |
| 453 | { | 453 | { |
| 454 | str exch 2 index put | 454 | str exch 2 index put |
| 455 | } for | 455 | } for |
| 456 | pop | 456 | pop |
| 457 | dup | 457 | dup |
| 458 | { | 458 | { |
| 459 | gsave | 459 | gsave |
| 460 | ptm setmatrix | 460 | ptm setmatrix |
| 461 | 1 index str length idiv {str show} repeat | 461 | 1 index str length idiv {str show} repeat |
| 462 | 1 index str length mod str exch 0 exch getinterval show | 462 | 1 index str length mod str exch 0 exch getinterval show |
| 463 | grestore | 463 | grestore |
| 464 | 0 height rmoveto | 464 | 0 height rmoveto |
| 465 | } repeat | 465 | } repeat |
| 466 | grestore | 466 | grestore |
| 467 | } for | 467 | } for |
| 468 | 2 npop | 468 | 2 npop |
| 469 | } | 469 | } |
| 470 | { | 470 | { |
| 471 | 4 npop | 471 | 4 npop |
| 472 | } ifelse | 472 | } ifelse |
| 473 | } if | 473 | } if |
| 474 | end | 474 | end |
| 475 | } def | 475 | } def |
| 476 | /patternclip | 476 | /patternclip |
| 477 | { | 477 | { |
| 478 | clip | 478 | clip |
| 479 | } def | 479 | } def |
| 480 | /patternstrokepath | 480 | /patternstrokepath |
| 481 | { | 481 | { |
| 482 | strokepath | 482 | strokepath |
| 483 | } def | 483 | } def |
| 484 | /patternmatrix | 484 | /patternmatrix |
| 485 | matrix def | 485 | matrix def |
| 486 | /patternfill | 486 | /patternfill |
| 487 | { | 487 | { |
| 488 | dup type /dicttype eq | 488 | dup type /dicttype eq |
| 489 | { | 489 | { |
| 490 | Adobe_pattern_AI3 /patternmatrix get | 490 | Adobe_pattern_AI3 /patternmatrix get |
| 491 | } if | 491 | } if |
| 492 | gsave | 492 | gsave |
| 493 | patternclip | 493 | patternclip |
| 494 | Adobe_pattern_AI3 /patternpath get exec | 494 | Adobe_pattern_AI3 /patternpath get exec |
| 495 | grestore | 495 | grestore |
| 496 | newpath | 496 | newpath |
| 497 | } def | 497 | } def |
| 498 | /patternstroke | 498 | /patternstroke |
| 499 | { | 499 | { |
| 500 | dup type /dicttype eq | 500 | dup type /dicttype eq |
| 501 | { | 501 | { |
| 502 | Adobe_pattern_AI3 /patternmatrix get | 502 | Adobe_pattern_AI3 /patternmatrix get |
| 503 | } if | 503 | } if |
| 504 | gsave | 504 | gsave |
| 505 | patternstrokepath | 505 | patternstrokepath |
| 506 | true | 506 | true |
| 507 | { | 507 | { |
| 508 | { | 508 | { |
| 509 | { | 509 | { |
| 510 | newpath | 510 | newpath |
| 511 | moveto | 511 | moveto |
| 512 | } | 512 | } |
| 513 | { | 513 | { |
| 514 | lineto | 514 | lineto |
| 515 | } | 515 | } |
| 516 | { | 516 | { |
| 517 | curveto | 517 | curveto |
| 518 | } | 518 | } |
| 519 | { | 519 | { |
| 520 | closepath | 520 | closepath |
| 521 | 3 copy | 521 | 3 copy |
| 522 | Adobe_pattern_AI3 /patternfill get exec | 522 | Adobe_pattern_AI3 /patternfill get exec |
| 523 | } pathforall | 523 | } pathforall |
| 524 | 3 npop | 524 | 3 npop |
| 525 | } stopped | 525 | } stopped |
| 526 | { | 526 | { |
| 527 | 5 npop | 527 | 5 npop |
| 528 | patternclip | 528 | patternclip |
| 529 | Adobe_pattern_AI3 /patternfill get exec | 529 | Adobe_pattern_AI3 /patternfill get exec |
| 530 | } if | 530 | } if |
| 531 | } | 531 | } |
| 532 | { | 532 | { |
| 533 | patternclip | 533 | patternclip |
| 534 | Adobe_pattern_AI3 /patternfill get exec | 534 | Adobe_pattern_AI3 /patternfill get exec |
| 535 | } ifelse | 535 | } ifelse |
| 536 | grestore | 536 | grestore |
| 537 | newpath | 537 | newpath |
| 538 | } def | 538 | } def |
| 539 | /patternashow | 539 | /patternashow |
| 540 | { | 540 | { |
| 541 | 3 index type /dicttype eq | 541 | 3 index type /dicttype eq |
| 542 | { | 542 | { |
| 543 | Adobe_pattern_AI3 /patternmatrix get 4 1 roll | 543 | Adobe_pattern_AI3 /patternmatrix get 4 1 roll |
| 544 | } if | 544 | } if |
| 545 | { | 545 | { |
| 546 | 2 npop (0) exch | 546 | 2 npop (0) exch |
| 547 | 2 copy 0 exch put pop | 547 | 2 copy 0 exch put pop |
| 548 | gsave | 548 | gsave |
| 549 | false charpath currentpoint | 549 | false charpath currentpoint |
| 550 | 6 index 6 index 6 index | 550 | 6 index 6 index 6 index |
| 551 | Adobe_pattern_AI3 /patternfill get exec | 551 | Adobe_pattern_AI3 /patternfill get exec |
| 552 | grestore | 552 | grestore |
| 553 | newpath moveto | 553 | newpath moveto |
| 554 | 2 copy rmoveto | 554 | 2 copy rmoveto |
| 555 | } exch cshow | 555 | } exch cshow |
| 556 | 5 npop | 556 | 5 npop |
| 557 | } def | 557 | } def |
| 558 | /patternawidthshow | 558 | /patternawidthshow |
| 559 | { | 559 | { |
| 560 | 6 index type /dicttype eq | 560 | 6 index type /dicttype eq |
| 561 | { | 561 | { |
| 562 | Adobe_pattern_AI3 /patternmatrix get 7 1 roll | 562 | Adobe_pattern_AI3 /patternmatrix get 7 1 roll |
| 563 | } if | 563 | } if |
| 564 | { | 564 | { |
| 565 | 2 npop (0) exch | 565 | 2 npop (0) exch |
| 566 | 2 copy 0 exch put | 566 | 2 copy 0 exch put |
| 567 | gsave | 567 | gsave |
| 568 | _sp eq {5 index 5 index rmoveto} if | 568 | _sp eq {5 index 5 index rmoveto} if |
| 569 | false charpath currentpoint | 569 | false charpath currentpoint |
| 570 | 9 index 9 index 9 index | 570 | 9 index 9 index 9 index |
| 571 | Adobe_pattern_AI3 /patternfill get exec | 571 | Adobe_pattern_AI3 /patternfill get exec |
| 572 | grestore | 572 | grestore |
| 573 | newpath moveto | 573 | newpath moveto |
| 574 | 2 copy rmoveto | 574 | 2 copy rmoveto |
| 575 | } exch cshow | 575 | } exch cshow |
| 576 | 8 npop | 576 | 8 npop |
| 577 | } def | 577 | } def |
| 578 | /patternashowstroke | 578 | /patternashowstroke |
| 579 | { | 579 | { |
| 580 | 4 index type /dicttype eq | 580 | 4 index type /dicttype eq |
| 581 | { | 581 | { |
| 582 | patternmatrix /patternmatrix get 5 1 roll | 582 | patternmatrix /patternmatrix get 5 1 roll |
| 583 | } if | 583 | } if |
| 584 | 4 1 roll | 584 | 4 1 roll |
| 585 | { | 585 | { |
| 586 | 2 npop (0) exch | 586 | 2 npop (0) exch |
| 587 | 2 copy 0 exch put pop | 587 | 2 copy 0 exch put pop |
| 588 | gsave | 588 | gsave |
| 589 | false charpath | 589 | false charpath |
| 590 | currentpoint | 590 | currentpoint |
| 591 | 4 index setmatrix | 591 | 4 index setmatrix |
| 592 | 7 index 7 index 7 index | 592 | 7 index 7 index 7 index |
| 593 | Adobe_pattern_AI3 /patternstroke get exec | 593 | Adobe_pattern_AI3 /patternstroke get exec |
| 594 | grestore | 594 | grestore |
| 595 | newpath moveto | 595 | newpath moveto |
| 596 | 2 copy rmoveto | 596 | 2 copy rmoveto |
| 597 | } exch cshow | 597 | } exch cshow |
| 598 | 6 npop | 598 | 6 npop |
| 599 | } def | 599 | } def |
| 600 | /patternawidthshowstroke | 600 | /patternawidthshowstroke |
| 601 | { | 601 | { |
| 602 | 7 index type /dicttype eq | 602 | 7 index type /dicttype eq |
| 603 | { | 603 | { |
| 604 | patternmatrix /patternmatrix get 8 1 roll | 604 | patternmatrix /patternmatrix get 8 1 roll |
| 605 | } if | 605 | } if |
| 606 | 7 1 roll | 606 | 7 1 roll |
| 607 | { | 607 | { |
| 608 | 2 npop (0) exch | 608 | 2 npop (0) exch |
| 609 | 2 copy 0 exch put | 609 | 2 copy 0 exch put |
| 610 | gsave | 610 | gsave |
| 611 | _sp eq {5 index 5 index rmoveto} if | 611 | _sp eq {5 index 5 index rmoveto} if |
| 612 | false charpath currentpoint | 612 | false charpath currentpoint |
| 613 | 7 index setmatrix | 613 | 7 index setmatrix |
| 614 | 10 index 10 index 10 index | 614 | 10 index 10 index 10 index |
| 615 | Adobe_pattern_AI3 /patternstroke get exec | 615 | Adobe_pattern_AI3 /patternstroke get exec |
| 616 | grestore | 616 | grestore |
| 617 | newpath moveto | 617 | newpath moveto |
| 618 | 2 copy rmoveto | 618 | 2 copy rmoveto |
| 619 | } exch cshow | 619 | } exch cshow |
| 620 | 9 npop | 620 | 9 npop |
| 621 | } def | 621 | } def |
| 622 | currentdict readonly pop end | 622 | currentdict readonly pop end |
| 623 | setpacking | 623 | setpacking |
| 624 | %%EndResource | 624 | %%EndResource |
| 625 | %%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 | 625 | %%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 |
| 626 | %%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) | 626 | %%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) |
| 627 | %%Version: 1.1 0 | 627 | %%Version: 1.1 0 |
| 628 | %%CreationDate: (3/7/1994) () | 628 | %%CreationDate: (3/7/1994) () |
| 629 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) | 629 | %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) |
| 630 | currentpacking true setpacking | 630 | currentpacking true setpacking |
| 631 | userdict /Adobe_Illustrator_AI3 71 dict dup begin put | 631 | userdict /Adobe_Illustrator_AI3 71 dict dup begin put |
| 632 | /initialize | 632 | /initialize |
| 633 | { | 633 | { |
| 634 | userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put | 634 | userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put |
| 635 | /_lp /none def | 635 | /_lp /none def |
| 636 | /_pf {} def | 636 | /_pf {} def |
| 637 | /_ps {} def | 637 | /_ps {} def |
| 638 | /_psf {} def | 638 | /_psf {} def |
| 639 | /_pss {} def | 639 | /_pss {} def |
| 640 | /_pjsf {} def | 640 | /_pjsf {} def |
| 641 | /_pjss {} def | 641 | /_pjss {} def |
| 642 | /_pola 0 def | 642 | /_pola 0 def |
| 643 | /_doClip 0 def | 643 | /_doClip 0 def |
| 644 | /cf currentflat def | 644 | /cf currentflat def |
| 645 | /_tm matrix def | 645 | /_tm matrix def |
| 646 | /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def | 646 | /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def |
| 647 | /_renderEnd [null null null null /i1 /i1 /i1 /i1] def | 647 | /_renderEnd [null null null null /i1 /i1 /i1 /i1] def |
| 648 | /_render -1 def | 648 | /_render -1 def |
| 649 | /_rise 0 def | 649 | /_rise 0 def |
| 650 | /_ax 0 def | 650 | /_ax 0 def |
| 651 | /_ay 0 def | 651 | /_ay 0 def |
| 652 | /_cx 0 def | 652 | /_cx 0 def |
| 653 | /_cy 0 def | 653 | /_cy 0 def |
| 654 | /_leading [0 0] def | 654 | /_leading [0 0] def |
| 655 | /_ctm matrix def | 655 | /_ctm matrix def |
| 656 | /_mtx matrix def | 656 | /_mtx matrix def |
| 657 | /_sp 16#020 def | 657 | /_sp 16#020 def |
| 658 | /_hyphen (-) def | 658 | /_hyphen (-) def |
| 659 | /_fScl 0 def | 659 | /_fScl 0 def |
| 660 | /_cnt 0 def | 660 | /_cnt 0 def |
| 661 | /_hs 1 def | 661 | /_hs 1 def |
| 662 | /_nativeEncoding 0 def | 662 | /_nativeEncoding 0 def |
| 663 | /_useNativeEncoding 0 def | 663 | /_useNativeEncoding 0 def |
| 664 | /_tempEncode 0 def | 664 | /_tempEncode 0 def |
| 665 | /_pntr 0 def | 665 | /_pntr 0 def |
| 666 | /_tDict 2 dict def | 666 | /_tDict 2 dict def |
| 667 | /_wv 0 def | 667 | /_wv 0 def |
| 668 | /Tx {} def | 668 | /Tx {} def |
| 669 | /Tj {} def | 669 | /Tj {} def |
| 670 | /CRender {} def | 670 | /CRender {} def |
| 671 | /_AI3_savepage {} def | 671 | /_AI3_savepage {} def |
| 672 | /_gf null def | 672 | /_gf null def |
| 673 | /_cf 4 array def | 673 | /_cf 4 array def |
| 674 | /_if null def | 674 | /_if null def |
| 675 | /_of false def | 675 | /_of false def |
| 676 | /_fc {} def | 676 | /_fc {} def |
| 677 | /_gs null def | 677 | /_gs null def |
| 678 | /_cs 4 array def | 678 | /_cs 4 array def |
| 679 | /_is null def | 679 | /_is null def |
| 680 | /_os false def | 680 | /_os false def |
| 681 | /_sc {} def | 681 | /_sc {} def |
| 682 | /_pd 1 dict def | 682 | /_pd 1 dict def |
| 683 | /_ed 15 dict def | 683 | /_ed 15 dict def |
| 684 | /_pm matrix def | 684 | /_pm matrix def |
| 685 | /_fm null def | 685 | /_fm null def |
| 686 | /_fd null def | 686 | /_fd null def |
| 687 | /_fdd null def | 687 | /_fdd null def |
| 688 | /_sm null def | 688 | /_sm null def |
| 689 | /_sd null def | 689 | /_sd null def |
| 690 | /_sdd null def | 690 | /_sdd null def |
| 691 | /_i null def | 691 | /_i null def |
| 692 | Adobe_Illustrator_AI3 begin | 692 | Adobe_Illustrator_AI3 begin |
| 693 | Adobe_Illustrator_AI3 dup /nc get begin | 693 | Adobe_Illustrator_AI3 dup /nc get begin |
| 694 | { | 694 | { |
| 695 | dup xcheck | 695 | dup xcheck |
| 696 | { | 696 | { |
| 697 | bind | 697 | bind |
| 698 | } if | 698 | } if |
| 699 | pop pop | 699 | pop pop |
| 700 | } forall | 700 | } forall |
| 701 | end | 701 | end |
| 702 | end | 702 | end |
| 703 | end | 703 | end |
| 704 | Adobe_Illustrator_AI3 begin | 704 | Adobe_Illustrator_AI3 begin |
| 705 | Adobe_Illustrator_AI3_vars begin | 705 | Adobe_Illustrator_AI3_vars begin |
| 706 | newpath | 706 | newpath |
| 707 | } def | 707 | } def |
| 708 | /terminate | 708 | /terminate |
| 709 | { | 709 | { |
| 710 | end | 710 | end |
| 711 | end | 711 | end |
| 712 | } def | 712 | } def |
| 713 | /_ | 713 | /_ |
| 714 | null def | 714 | null def |
| 715 | /ddef | 715 | /ddef |
| 716 | { | 716 | { |
| 717 | Adobe_Illustrator_AI3_vars 3 1 roll put | 717 | Adobe_Illustrator_AI3_vars 3 1 roll put |
| 718 | } def | 718 | } def |
| 719 | /xput | 719 | /xput |
| 720 | { | 720 | { |
| 721 | dup load dup length exch maxlength eq | 721 | dup load dup length exch maxlength eq |
| 722 | { | 722 | { |
| 723 | dup dup load dup | 723 | dup dup load dup |
| 724 | length 2 mul dict copy def | 724 | length 2 mul dict copy def |
| 725 | } if | 725 | } if |
| 726 | load begin def end | 726 | load begin def end |
| 727 | } def | 727 | } def |
| 728 | /npop | 728 | /npop |
| 729 | { | 729 | { |
| 730 | { | 730 | { |
| 731 | pop | 731 | pop |
| 732 | } repeat | 732 | } repeat |
| 733 | } def | 733 | } def |
| 734 | /sw | 734 | /sw |
| 735 | { | 735 | { |
| 736 | dup length exch stringwidth | 736 | dup length exch stringwidth |
| 737 | exch 5 -1 roll 3 index mul add | 737 | exch 5 -1 roll 3 index mul add |
| 738 | 4 1 roll 3 1 roll mul add | 738 | 4 1 roll 3 1 roll mul add |
| 739 | } def | 739 | } def |
| 740 | /swj | 740 | /swj |
| 741 | { | 741 | { |
| 742 | dup 4 1 roll | 742 | dup 4 1 roll |
| 743 | dup length exch stringwidth | 743 | dup length exch stringwidth |
| 744 | exch 5 -1 roll 3 index mul add | 744 | exch 5 -1 roll 3 index mul add |
| 745 | 4 1 roll 3 1 roll mul add | 745 | 4 1 roll 3 1 roll mul add |
| 746 | 6 2 roll /_cnt 0 ddef | 746 | 6 2 roll /_cnt 0 ddef |
| 747 | {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop | 747 | {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop |
| 748 | exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop | 748 | exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop |
| 749 | } def | 749 | } def |
| 750 | /ss | 750 | /ss |
| 751 | { | 751 | { |
| 752 | 4 1 roll | 752 | 4 1 roll |
| 753 | { | 753 | { |
| 754 | 2 npop | 754 | 2 npop |
| 755 | (0) exch 2 copy 0 exch put pop | 755 | (0) exch 2 copy 0 exch put pop |
| 756 | gsave | 756 | gsave |
| 757 | false charpath currentpoint | 757 | false charpath currentpoint |
| 758 | 4 index setmatrix | 758 | 4 index setmatrix |
| 759 | stroke | 759 | stroke |
| 760 | grestore | 760 | grestore |
| 761 | moveto | 761 | moveto |
| 762 | 2 copy rmoveto | 762 | 2 copy rmoveto |
| 763 | } exch cshow | 763 | } exch cshow |
| 764 | 3 npop | 764 | 3 npop |
| 765 | } def | 765 | } def |
| 766 | /jss | 766 | /jss |
| 767 | { | 767 | { |
| 768 | 4 1 roll | 768 | 4 1 roll |
| 769 | { | 769 | { |
| 770 | 2 npop | 770 | 2 npop |
| 771 | (0) exch 2 copy 0 exch put | 771 | (0) exch 2 copy 0 exch put |
| 772 | gsave | 772 | gsave |
| 773 | _sp eq | 773 | _sp eq |
| 774 | { | 774 | { |
| 775 | exch 6 index 6 index 6 index 5 -1 roll widthshow | 775 | exch 6 index 6 index 6 index 5 -1 roll widthshow |
| 776 | currentpoint | 776 | currentpoint |
| 777 | } | 777 | } |
| 778 | { | 778 | { |
| 779 | false charpath currentpoint | 779 | false charpath currentpoint |
| 780 | 4 index setmatrix stroke | 780 | 4 index setmatrix stroke |
| 781 | }ifelse | 781 | }ifelse |
| 782 | grestore | 782 | grestore |
| 783 | moveto | 783 | moveto |
| 784 | 2 copy rmoveto | 784 | 2 copy rmoveto |
| 785 | } exch cshow | 785 | } exch cshow |
| 786 | 6 npop | 786 | 6 npop |
| 787 | } def | 787 | } def |
| 788 | /sp | 788 | /sp |
| 789 | { | 789 | { |
| 790 | { | 790 | { |
| 791 | 2 npop (0) exch | 791 | 2 npop (0) exch |
| 792 | 2 copy 0 exch put pop | 792 | 2 copy 0 exch put pop |
| 793 | false charpath | 793 | false charpath |
| 794 | 2 copy rmoveto | 794 | 2 copy rmoveto |
| 795 | } exch cshow | 795 | } exch cshow |
| 796 | 2 npop | 796 | 2 npop |
| 797 | } def | 797 | } def |
| 798 | /jsp | 798 | /jsp |
| 799 | { | 799 | { |
| 800 | { | 800 | { |
| 801 | 2 npop | 801 | 2 npop |
| 802 | (0) exch 2 copy 0 exch put | 802 | (0) exch 2 copy 0 exch put |
| 803 | _sp eq | 803 | _sp eq |
| 804 | { | 804 | { |
| 805 | exch 5 index 5 index 5 index 5 -1 roll widthshow | 805 | exch 5 index 5 index 5 index 5 -1 roll widthshow |
| 806 | } | 806 | } |
| 807 | { | 807 | { |
| 808 | false charpath | 808 | false charpath |
| 809 | }ifelse | 809 | }ifelse |
| 810 | 2 copy rmoveto | 810 | 2 copy rmoveto |
| 811 | } exch cshow | 811 | } exch cshow |
| 812 | 5 npop | 812 | 5 npop |
| 813 | } def | 813 | } def |
| 814 | /pl | 814 | /pl |
| 815 | { | 815 | { |
| 816 | transform | 816 | transform |
| 817 | 0.25 sub round 0.25 add exch | 817 | 0.25 sub round 0.25 add exch |
| 818 | 0.25 sub round 0.25 add exch | 818 | 0.25 sub round 0.25 add exch |
| 819 | itransform | 819 | itransform |
| 820 | } def | 820 | } def |
| 821 | /setstrokeadjust where | 821 | /setstrokeadjust where |
| 822 | { | 822 | { |
| 823 | pop true setstrokeadjust | 823 | pop true setstrokeadjust |
| 824 | /c | 824 | /c |
| 825 | { | 825 | { |
| 826 | curveto | 826 | curveto |
| 827 | } def | 827 | } def |
| 828 | /C | 828 | /C |
| 829 | /c load def | 829 | /c load def |
| 830 | /v | 830 | /v |
| 831 | { | 831 | { |
| 832 | currentpoint 6 2 roll curveto | 832 | currentpoint 6 2 roll curveto |
| 833 | } def | 833 | } def |
| 834 | /V | 834 | /V |
| 835 | /v load def | 835 | /v load def |
| 836 | /y | 836 | /y |
| 837 | { | 837 | { |
| 838 | 2 copy curveto | 838 | 2 copy curveto |
| 839 | } def | 839 | } def |
| 840 | /Y | 840 | /Y |
| 841 | /y load def | 841 | /y load def |
| 842 | /l | 842 | /l |
| 843 | { | 843 | { |
| 844 | lineto | 844 | lineto |
| 845 | } def | 845 | } def |
| 846 | /L | 846 | /L |
| 847 | /l load def | 847 | /l load def |
| 848 | /m | 848 | /m |
| 849 | { | 849 | { |
| 850 | moveto | 850 | moveto |
| 851 | } def | 851 | } def |
| 852 | } | 852 | } |
| 853 | { | 853 | { |
| 854 | /c | 854 | /c |
| 855 | { | 855 | { |
| 856 | pl curveto | 856 | pl curveto |
| 857 | } def | 857 | } def |
| 858 | /C | 858 | /C |
| 859 | /c load def | 859 | /c load def |
| 860 | /v | 860 | /v |
| 861 | { | 861 | { |
| 862 | currentpoint 6 2 roll pl curveto | 862 | currentpoint 6 2 roll pl curveto |
| 863 | } def | 863 | } def |
| 864 | /V | 864 | /V |
| 865 | /v load def | 865 | /v load def |
| 866 | /y | 866 | /y |
| 867 | { | 867 | { |
| 868 | pl 2 copy curveto | 868 | pl 2 copy curveto |
| 869 | } def | 869 | } def |
| 870 | /Y | 870 | /Y |
| 871 | /y load def | 871 | /y load def |
| 872 | /l | 872 | /l |
| 873 | { | 873 | { |
| 874 | pl lineto | 874 | pl lineto |
| 875 | } def | 875 | } def |
| 876 | /L | 876 | /L |
| 877 | /l load def | 877 | /l load def |
| 878 | /m | 878 | /m |
| 879 | { | 879 | { |
| 880 | pl moveto | 880 | pl moveto |
| 881 | } def | 881 | } def |
| 882 | } ifelse | 882 | } ifelse |
| 883 | /d | 883 | /d |
| 884 | { | 884 | { |
| 885 | setdash | 885 | setdash |
| 886 | } def | 886 | } def |
| 887 | /cf {} def | 887 | /cf {} def |
| 888 | /i | 888 | /i |
| 889 | { | 889 | { |
| 890 | dup 0 eq | 890 | dup 0 eq |
| 891 | { | 891 | { |
| 892 | pop cf | 892 | pop cf |
| 893 | } if | 893 | } if |
| 894 | setflat | 894 | setflat |
| 895 | } def | 895 | } def |
| 896 | /j | 896 | /j |
| 897 | { | 897 | { |
| 898 | setlinejoin | 898 | setlinejoin |
| 899 | } def | 899 | } def |
| 900 | /J | 900 | /J |
| 901 | { | 901 | { |
| 902 | setlinecap | 902 | setlinecap |
| 903 | } def | 903 | } def |
| 904 | /M | 904 | /M |
| 905 | { | 905 | { |
| 906 | setmiterlimit | 906 | setmiterlimit |
| 907 | } def | 907 | } def |
| 908 | /w | 908 | /w |
| 909 | { | 909 | { |
| 910 | setlinewidth | 910 | setlinewidth |
| 911 | } def | 911 | } def |
| 912 | /H | 912 | /H |
| 913 | {} def | 913 | {} def |
| 914 | /h | 914 | /h |
| 915 | { | 915 | { |
| 916 | closepath | 916 | closepath |
| 917 | } def | 917 | } def |
| 918 | /N | 918 | /N |
| 919 | { | 919 | { |
| 920 | _pola 0 eq | 920 | _pola 0 eq |
| 921 | { | 921 | { |
| 922 | _doClip 1 eq {clip /_doClip 0 ddef} if | 922 | _doClip 1 eq {clip /_doClip 0 ddef} if |
| 923 | newpath | 923 | newpath |
| 924 | } | 924 | } |
| 925 | { | 925 | { |
| 926 | /CRender {N} ddef | 926 | /CRender {N} ddef |
| 927 | }ifelse | 927 | }ifelse |
| 928 | } def | 928 | } def |
| 929 | /n | 929 | /n |
| 930 | {N} def | 930 | {N} def |
| 931 | /F | 931 | /F |
| 932 | { | 932 | { |
| 933 | _pola 0 eq | 933 | _pola 0 eq |
| 934 | { | 934 | { |
| 935 | _doClip 1 eq | 935 | _doClip 1 eq |
| 936 | { | 936 | { |
| 937 | gsave _pf grestore clip newpath /_lp /none ddef _fc | 937 | gsave _pf grestore clip newpath /_lp /none ddef _fc |
| 938 | /_doClip 0 ddef | 938 | /_doClip 0 ddef |
| 939 | } | 939 | } |
| 940 | { | 940 | { |
| 941 | _pf | 941 | _pf |
| 942 | }ifelse | 942 | }ifelse |
| 943 | } | 943 | } |
| 944 | { | 944 | { |
| 945 | /CRender {F} ddef | 945 | /CRender {F} ddef |
| 946 | }ifelse | 946 | }ifelse |
| 947 | } def | 947 | } def |
| 948 | /f | 948 | /f |
| 949 | { | 949 | { |
| 950 | closepath | 950 | closepath |
| 951 | F | 951 | F |
| 952 | } def | 952 | } def |
| 953 | /S | 953 | /S |
| 954 | { | 954 | { |
| 955 | _pola 0 eq | 955 | _pola 0 eq |
| 956 | { | 956 | { |
| 957 | _doClip 1 eq | 957 | _doClip 1 eq |
| 958 | { | 958 | { |
| 959 | gsave _ps grestore clip newpath /_lp /none ddef _sc | 959 | gsave _ps grestore clip newpath /_lp /none ddef _sc |
| 960 | /_doClip 0 ddef | 960 | /_doClip 0 ddef |
| 961 | } | 961 | } |
| 962 | { | 962 | { |
| 963 | _ps | 963 | _ps |
| 964 | }ifelse | 964 | }ifelse |
| 965 | } | 965 | } |
| 966 | { | 966 | { |
| 967 | /CRender {S} ddef | 967 | /CRender {S} ddef |
| 968 | }ifelse | 968 | }ifelse |
| 969 | } def | 969 | } def |
| 970 | /s | 970 | /s |
| 971 | { | 971 | { |
| 972 | closepath | 972 | closepath |
| 973 | S | 973 | S |
| 974 | } def | 974 | } def |
| 975 | /B | 975 | /B |
| 976 | { | 976 | { |
| 977 | _pola 0 eq | 977 | _pola 0 eq |
| 978 | { | 978 | { |
| 979 | _doClip 1 eq | 979 | _doClip 1 eq |
| 980 | gsave F grestore | 980 | gsave F grestore |
| 981 | { | 981 | { |
| 982 | gsave S grestore clip newpath /_lp /none ddef _sc | 982 | gsave S grestore clip newpath /_lp /none ddef _sc |
| 983 | /_doClip 0 ddef | 983 | /_doClip 0 ddef |
| 984 | } | 984 | } |
| 985 | { | 985 | { |
| 986 | S | 986 | S |
| 987 | }ifelse | 987 | }ifelse |
| 988 | } | 988 | } |
| 989 | { | 989 | { |
| 990 | /CRender {B} ddef | 990 | /CRender {B} ddef |
| 991 | }ifelse | 991 | }ifelse |
| 992 | } def | 992 | } def |
| 993 | /b | 993 | /b |
| 994 | { | 994 | { |
| 995 | closepath | 995 | closepath |
| 996 | B | 996 | B |
| 997 | } def | 997 | } def |
| 998 | /W | 998 | /W |
| 999 | { | 999 | { |
| 1000 | /_doClip 1 ddef | 1000 | /_doClip 1 ddef |
| 1001 | } def | 1001 | } def |
| 1002 | /* | 1002 | /* |
| 1003 | { | 1003 | { |
| 1004 | count 0 ne | 1004 | count 0 ne |
| 1005 | { | 1005 | { |
| 1006 | dup type (stringtype) eq {pop} if | 1006 | dup type (stringtype) eq {pop} if |
| 1007 | } if | 1007 | } if |
| 1008 | _pola 0 eq {newpath} if | 1008 | _pola 0 eq {newpath} if |
| 1009 | } def | 1009 | } def |
| 1010 | /u | 1010 | /u |
| 1011 | {} def | 1011 | {} def |
| 1012 | /U | 1012 | /U |
| 1013 | {} def | 1013 | {} def |
| 1014 | /q | 1014 | /q |
| 1015 | { | 1015 | { |
| 1016 | _pola 0 eq {gsave} if | 1016 | _pola 0 eq {gsave} if |
| 1017 | } def | 1017 | } def |
| 1018 | /Q | 1018 | /Q |
| 1019 | { | 1019 | { |
| 1020 | _pola 0 eq {grestore} if | 1020 | _pola 0 eq {grestore} if |
| 1021 | } def | 1021 | } def |
| 1022 | /*u | 1022 | /*u |
| 1023 | { | 1023 | { |
| 1024 | _pola 1 add /_pola exch ddef | 1024 | _pola 1 add /_pola exch ddef |
| 1025 | } def | 1025 | } def |
| 1026 | /*U | 1026 | /*U |
| 1027 | { | 1027 | { |
| 1028 | _pola 1 sub /_pola exch ddef | 1028 | _pola 1 sub /_pola exch ddef |
| 1029 | _pola 0 eq {CRender} if | 1029 | _pola 0 eq {CRender} if |
| 1030 | } def | 1030 | } def |
| 1031 | /D | 1031 | /D |
| 1032 | {pop} def | 1032 | {pop} def |
| 1033 | /*w | 1033 | /*w |
| 1034 | {} def | 1034 | {} def |
| 1035 | /*W | 1035 | /*W |
| 1036 | {} def | 1036 | {} def |
| 1037 | /` | 1037 | /` |
| 1038 | { | 1038 | { |
| 1039 | /_i save ddef | 1039 | /_i save ddef |
| 1040 | 6 1 roll 4 npop | 1040 | 6 1 roll 4 npop |
| 1041 | concat pop | 1041 | concat pop |
| 1042 | userdict begin | 1042 | userdict begin |
| 1043 | /showpage {} def | 1043 | /showpage {} def |
| 1044 | 0 setgray | 1044 | 0 setgray |
| 1045 | 0 setlinecap | 1045 | 0 setlinecap |
| 1046 | 1 setlinewidth | 1046 | 1 setlinewidth |
| 1047 | 0 setlinejoin | 1047 | 0 setlinejoin |
| 1048 | 10 setmiterlimit | 1048 | 10 setmiterlimit |
| 1049 | [] 0 setdash | 1049 | [] 0 setdash |
| 1050 | /setstrokeadjust where {pop false setstrokeadjust} if | 1050 | /setstrokeadjust where {pop false setstrokeadjust} if |
| 1051 | newpath | 1051 | newpath |
| 1052 | 0 setgray | 1052 | 0 setgray |
| 1053 | false setoverprint | 1053 | false setoverprint |
| 1054 | } def | 1054 | } def |
| 1055 | /~ | 1055 | /~ |
| 1056 | { | 1056 | { |
| 1057 | end | 1057 | end |
| 1058 | _i restore | 1058 | _i restore |
| 1059 | } def | 1059 | } def |
| 1060 | /@ | 1060 | /@ |
| 1061 | {} def | 1061 | {} def |
| 1062 | /& | 1062 | /& |
| 1063 | {} def | 1063 | {} def |
| 1064 | /O | 1064 | /O |
| 1065 | { | 1065 | { |
| 1066 | 0 ne | 1066 | 0 ne |
| 1067 | /_of exch ddef | 1067 | /_of exch ddef |
| 1068 | /_lp /none ddef | 1068 | /_lp /none ddef |
| 1069 | } def | 1069 | } def |
| 1070 | /R | 1070 | /R |
| 1071 | { | 1071 | { |
| 1072 | 0 ne | 1072 | 0 ne |
| 1073 | /_os exch ddef | 1073 | /_os exch ddef |
| 1074 | /_lp /none ddef | 1074 | /_lp /none ddef |
| 1075 | } def | 1075 | } def |
| 1076 | /g | 1076 | /g |
| 1077 | { | 1077 | { |
| 1078 | /_gf exch ddef | 1078 | /_gf exch ddef |
| 1079 | /_fc | 1079 | /_fc |
| 1080 | { | 1080 | { |
| 1081 | _lp /fill ne | 1081 | _lp /fill ne |
| 1082 | { | 1082 | { |
| 1083 | _of setoverprint | 1083 | _of setoverprint |
| 1084 | _gf setgray | 1084 | _gf setgray |
| 1085 | /_lp /fill ddef | 1085 | /_lp /fill ddef |
| 1086 | } if | 1086 | } if |
| 1087 | } ddef | 1087 | } ddef |
| 1088 | /_pf | 1088 | /_pf |
| 1089 | { | 1089 | { |
| 1090 | _fc | 1090 | _fc |
| 1091 | fill | 1091 | fill |
| 1092 | } ddef | 1092 | } ddef |
| 1093 | /_psf | 1093 | /_psf |
| 1094 | { | 1094 | { |
| 1095 | _fc | 1095 | _fc |
| 1096 | ashow | 1096 | ashow |
| 1097 | } ddef | 1097 | } ddef |
| 1098 | /_pjsf | 1098 | /_pjsf |
| 1099 | { | 1099 | { |
| 1100 | _fc | 1100 | _fc |
| 1101 | awidthshow | 1101 | awidthshow |
| 1102 | } ddef | 1102 | } ddef |
| 1103 | /_lp /none ddef | 1103 | /_lp /none ddef |
| 1104 | } def | 1104 | } def |
| 1105 | /G | 1105 | /G |
| 1106 | { | 1106 | { |
| 1107 | /_gs exch ddef | 1107 | /_gs exch ddef |
| 1108 | /_sc | 1108 | /_sc |
| 1109 | { | 1109 | { |
| 1110 | _lp /stroke ne | 1110 | _lp /stroke ne |
| 1111 | { | 1111 | { |
| 1112 | _os setoverprint | 1112 | _os setoverprint |
| 1113 | _gs setgray | 1113 | _gs setgray |
| 1114 | /_lp /stroke ddef | 1114 | /_lp /stroke ddef |
| 1115 | } if | 1115 | } if |
| 1116 | } ddef | 1116 | } ddef |
| 1117 | /_ps | 1117 | /_ps |
| 1118 | { | 1118 | { |
| 1119 | _sc | 1119 | _sc |
| 1120 | stroke | 1120 | stroke |
| 1121 | } ddef | 1121 | } ddef |
| 1122 | /_pss | 1122 | /_pss |
| 1123 | { | 1123 | { |
| 1124 | _sc | 1124 | _sc |
| 1125 | ss | 1125 | ss |
| 1126 | } ddef | 1126 | } ddef |
| 1127 | /_pjss | 1127 | /_pjss |
| 1128 | { | 1128 | { |
| 1129 | _sc | 1129 | _sc |
| 1130 | jss | 1130 | jss |
| 1131 | } ddef | 1131 | } ddef |
| 1132 | /_lp /none ddef | 1132 | /_lp /none ddef |
| 1133 | } def | 1133 | } def |
| 1134 | /k | 1134 | /k |
| 1135 | { | 1135 | { |
| 1136 | _cf astore pop | 1136 | _cf astore pop |
| 1137 | /_fc | 1137 | /_fc |
| 1138 | { | 1138 | { |
| 1139 | _lp /fill ne | 1139 | _lp /fill ne |
| 1140 | { | 1140 | { |
| 1141 | _of setoverprint | 1141 | _of setoverprint |
| 1142 | _cf aload pop setcmykcolor | 1142 | _cf aload pop setcmykcolor |
| 1143 | /_lp /fill ddef | 1143 | /_lp /fill ddef |
| 1144 | } if | 1144 | } if |
| 1145 | } ddef | 1145 | } ddef |
| 1146 | /_pf | 1146 | /_pf |
| 1147 | { | 1147 | { |
| 1148 | _fc | 1148 | _fc |
| 1149 | fill | 1149 | fill |
| 1150 | } ddef | 1150 | } ddef |
| 1151 | /_psf | 1151 | /_psf |
| 1152 | { | 1152 | { |
| 1153 | _fc | 1153 | _fc |
| 1154 | ashow | 1154 | ashow |
| 1155 | } ddef | 1155 | } ddef |
| 1156 | /_pjsf | 1156 | /_pjsf |
| 1157 | { | 1157 | { |
| 1158 | _fc | 1158 | _fc |
| 1159 | awidthshow | 1159 | awidthshow |
| 1160 | } ddef | 1160 | } ddef |
| 1161 | /_lp /none ddef | 1161 | /_lp /none ddef |
| 1162 | } def | 1162 | } def |
| 1163 | /K | 1163 | /K |
| 1164 | { | 1164 | { |
| 1165 | _cs astore pop | 1165 | _cs astore pop |
| 1166 | /_sc | 1166 | /_sc |
| 1167 | { | 1167 | { |
| 1168 | _lp /stroke ne | 1168 | _lp /stroke ne |
| 1169 | { | 1169 | { |
| 1170 | _os setoverprint | 1170 | _os setoverprint |
| 1171 | _cs aload pop setcmykcolor | 1171 | _cs aload pop setcmykcolor |
| 1172 | /_lp /stroke ddef | 1172 | /_lp /stroke ddef |
| 1173 | } if | 1173 | } if |
| 1174 | } ddef | 1174 | } ddef |
| 1175 | /_ps | 1175 | /_ps |
| 1176 | { | 1176 | { |
| 1177 | _sc | 1177 | _sc |
| 1178 | stroke | 1178 | stroke |
| 1179 | } ddef | 1179 | } ddef |
| 1180 | /_pss | 1180 | /_pss |
| 1181 | { | 1181 | { |
| 1182 | _sc | 1182 | _sc |
| 1183 | ss | 1183 | ss |
| 1184 | } ddef | 1184 | } ddef |
| 1185 | /_pjss | 1185 | /_pjss |
| 1186 | { | 1186 | { |
| 1187 | _sc | 1187 | _sc |
| 1188 | jss | 1188 | jss |
| 1189 | } ddef | 1189 | } ddef |
| 1190 | /_lp /none ddef | 1190 | /_lp /none ddef |
| 1191 | } def | 1191 | } def |
| 1192 | /x | 1192 | /x |
| 1193 | { | 1193 | { |
| 1194 | /_gf exch ddef | 1194 | /_gf exch ddef |
| 1195 | findcmykcustomcolor | 1195 | findcmykcustomcolor |
| 1196 | /_if exch ddef | 1196 | /_if exch ddef |
| 1197 | /_fc | 1197 | /_fc |
| 1198 | { | 1198 | { |
| 1199 | _lp /fill ne | 1199 | _lp /fill ne |
| 1200 | { | 1200 | { |
| 1201 | _of setoverprint | 1201 | _of setoverprint |
| 1202 | _if _gf 1 exch sub setcustomcolor | 1202 | _if _gf 1 exch sub setcustomcolor |
| 1203 | /_lp /fill ddef | 1203 | /_lp /fill ddef |
| 1204 | } if | 1204 | } if |
| 1205 | } ddef | 1205 | } ddef |
| 1206 | /_pf | 1206 | /_pf |
| 1207 | { | 1207 | { |
| 1208 | _fc | 1208 | _fc |
| 1209 | fill | 1209 | fill |
| 1210 | } ddef | 1210 | } ddef |
| 1211 | /_psf | 1211 | /_psf |
| 1212 | { | 1212 | { |
| 1213 | _fc | 1213 | _fc |
| 1214 | ashow | 1214 | ashow |
| 1215 | } ddef | 1215 | } ddef |
| 1216 | /_pjsf | 1216 | /_pjsf |
| 1217 | { | 1217 | { |
| 1218 | _fc | 1218 | _fc |
| 1219 | awidthshow | 1219 | awidthshow |
| 1220 | } ddef | 1220 | } ddef |
| 1221 | /_lp /none ddef | 1221 | /_lp /none ddef |
| 1222 | } def | 1222 | } def |
| 1223 | /X | 1223 | /X |
| 1224 | { | 1224 | { |
| 1225 | /_gs exch ddef | 1225 | /_gs exch ddef |
| 1226 | findcmykcustomcolor | 1226 | findcmykcustomcolor |
| 1227 | /_is exch ddef | 1227 | /_is exch ddef |
| 1228 | /_sc | 1228 | /_sc |
| 1229 | { | 1229 | { |
| 1230 | _lp /stroke ne | 1230 | _lp /stroke ne |
| 1231 | { | 1231 | { |
| 1232 | _os setoverprint | 1232 | _os setoverprint |
| 1233 | _is _gs 1 exch sub setcustomcolor | 1233 | _is _gs 1 exch sub setcustomcolor |
| 1234 | /_lp /stroke ddef | 1234 | /_lp /stroke ddef |
| 1235 | } if | 1235 | } if |
| 1236 | } ddef | 1236 | } ddef |
| 1237 | /_ps | 1237 | /_ps |
| 1238 | { | 1238 | { |
| 1239 | _sc | 1239 | _sc |
| 1240 | stroke | 1240 | stroke |
| 1241 | } ddef | 1241 | } ddef |
| 1242 | /_pss | 1242 | /_pss |
| 1243 | { | 1243 | { |
| 1244 | _sc | 1244 | _sc |
| 1245 | ss | 1245 | ss |
| 1246 | } ddef | 1246 | } ddef |
| 1247 | /_pjss | 1247 | /_pjss |
| 1248 | { | 1248 | { |
| 1249 | _sc | 1249 | _sc |
| 1250 | jss | 1250 | jss |
| 1251 | } ddef | 1251 | } ddef |
| 1252 | /_lp /none ddef | 1252 | /_lp /none ddef |
| 1253 | } def | 1253 | } def |
| 1254 | /dp | 1254 | /dp |
| 1255 | { | 1255 | { |
| 1256 | dup null eq | 1256 | dup null eq |
| 1257 | { | 1257 | { |
| 1258 | pop | 1258 | pop |
| 1259 | _dp 0 ne | 1259 | _dp 0 ne |
| 1260 | { | 1260 | { |
| 1261 | 0 1 _dp 1 sub _dl mod | 1261 | 0 1 _dp 1 sub _dl mod |
| 1262 | { | 1262 | { |
| 1263 | _da exch get 3 get | 1263 | _da exch get 3 get |
| 1264 | } for | 1264 | } for |
| 1265 | _dp 1 sub _dl mod 1 add packedarray | 1265 | _dp 1 sub _dl mod 1 add packedarray |
| 1266 | _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll | 1266 | _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll |
| 1267 | definepattern pop | 1267 | definepattern pop |
| 1268 | } if | 1268 | } if |
| 1269 | } | 1269 | } |
| 1270 | { | 1270 | { |
| 1271 | _dp 0 ne _dp _dl mod 0 eq and | 1271 | _dp 0 ne _dp _dl mod 0 eq and |
| 1272 | { | 1272 | { |
| 1273 | null dp | 1273 | null dp |
| 1274 | } if | 1274 | } if |
| 1275 | 7 packedarray _da exch _dp _dl mod exch put | 1275 | 7 packedarray _da exch _dp _dl mod exch put |
| 1276 | _dp _dl mod _da 0 get 4 get 2 packedarray | 1276 | _dp _dl mod _da 0 get 4 get 2 packedarray |
| 1277 | /_dp _dp 1 add def | 1277 | /_dp _dp 1 add def |
| 1278 | } ifelse | 1278 | } ifelse |
| 1279 | } def | 1279 | } def |
| 1280 | /E | 1280 | /E |
| 1281 | { | 1281 | { |
| 1282 | _ed begin | 1282 | _ed begin |
| 1283 | dup 0 get type /arraytype ne | 1283 | dup 0 get type /arraytype ne |
| 1284 | { | 1284 | { |
| 1285 | 0 | 1285 | 0 |
| 1286 | { | 1286 | { |
| 1287 | dup 1 add index type /arraytype eq | 1287 | dup 1 add index type /arraytype eq |
| 1288 | { | 1288 | { |
| 1289 | 1 add | 1289 | 1 add |
| 1290 | } | 1290 | } |
| 1291 | { | 1291 | { |
| 1292 | exit | 1292 | exit |
| 1293 | } ifelse | 1293 | } ifelse |
| 1294 | } loop | 1294 | } loop |
| 1295 | array astore | 1295 | array astore |
| 1296 | } if | 1296 | } if |
| 1297 | /_dd exch def | 1297 | /_dd exch def |
| 1298 | /_ury exch def | 1298 | /_ury exch def |
| 1299 | /_urx exch def | 1299 | /_urx exch def |
| 1300 | /_lly exch def | 1300 | /_lly exch def |
| 1301 | /_llx exch def | 1301 | /_llx exch def |
| 1302 | /_n exch def | 1302 | /_n exch def |
| 1303 | /_y 0 def | 1303 | /_y 0 def |
| 1304 | /_dl 4 def | 1304 | /_dl 4 def |
| 1305 | /_dp 0 def | 1305 | /_dp 0 def |
| 1306 | /_da _dl array def | 1306 | /_da _dl array def |
| 1307 | 0 1 _dd length 1 sub | 1307 | 0 1 _dd length 1 sub |
| 1308 | { | 1308 | { |
| 1309 | /_d exch _dd exch get def | 1309 | /_d exch _dd exch get def |
| 1310 | 0 2 _d length 2 sub | 1310 | 0 2 _d length 2 sub |
| 1311 | { | 1311 | { |
| 1312 | /_x exch def | 1312 | /_x exch def |
| 1313 | /_c _d _x get _ ne def | 1313 | /_c _d _x get _ ne def |
| 1314 | /_r _d _x 1 add get cvlit def | 1314 | /_r _d _x 1 add get cvlit def |
| 1315 | _r _ ne | 1315 | _r _ ne |
| 1316 | { | 1316 | { |
| 1317 | _urx _llx sub _ury _lly sub [1 0 0 1 0 0] | 1317 | _urx _llx sub _ury _lly sub [1 0 0 1 0 0] |
| 1318 | [ | 1318 | [ |
| 1319 | /save cvx | 1319 | /save cvx |
| 1320 | _llx neg _lly neg /translate cvx | 1320 | _llx neg _lly neg /translate cvx |
| 1321 | _c | 1321 | _c |
| 1322 | { | 1322 | { |
| 1323 | nc /begin cvx | 1323 | nc /begin cvx |
| 1324 | } if | 1324 | } if |
| 1325 | _r dup type /stringtype eq | 1325 | _r dup type /stringtype eq |
| 1326 | { | 1326 | { |
| 1327 | cvx | 1327 | cvx |
| 1328 | } | 1328 | } |
| 1329 | { | 1329 | { |
| 1330 | {exec} /forall cvx | 1330 | {exec} /forall cvx |
| 1331 | } ifelse | 1331 | } ifelse |
| 1332 | _c | 1332 | _c |
| 1333 | { | 1333 | { |
| 1334 | /end cvx | 1334 | /end cvx |
| 1335 | } if | 1335 | } if |
| 1336 | /restore cvx | 1336 | /restore cvx |
| 1337 | ] cvx | 1337 | ] cvx |
| 1338 | /_fn 12 _n length add string def | 1338 | /_fn 12 _n length add string def |
| 1339 | _y _fn cvs pop | 1339 | _y _fn cvs pop |
| 1340 | /_y _y 1 add def | 1340 | /_y _y 1 add def |
| 1341 | _fn 12 _n putinterval | 1341 | _fn 12 _n putinterval |
| 1342 | _fn _c false dp | 1342 | _fn _c false dp |
| 1343 | _d exch _x 1 add exch put | 1343 | _d exch _x 1 add exch put |
| 1344 | } if | 1344 | } if |
| 1345 | } for | 1345 | } for |
| 1346 | } for | 1346 | } for |
| 1347 | null dp | 1347 | null dp |
| 1348 | _n _dd /_pd | 1348 | _n _dd /_pd |
| 1349 | end xput | 1349 | end xput |
| 1350 | } def | 1350 | } def |
| 1351 | /fc | 1351 | /fc |
| 1352 | { | 1352 | { |
| 1353 | _fm dup concatmatrix pop | 1353 | _fm dup concatmatrix pop |
| 1354 | } def | 1354 | } def |
| 1355 | /p | 1355 | /p |
| 1356 | { | 1356 | { |
| 1357 | /_fm exch ddef | 1357 | /_fm exch ddef |
| 1358 | 9 -2 roll _pm translate fc | 1358 | 9 -2 roll _pm translate fc |
| 1359 | 7 -2 roll _pm scale fc | 1359 | 7 -2 roll _pm scale fc |
| 1360 | 5 -1 roll _pm rotate fc | 1360 | 5 -1 roll _pm rotate fc |
| 1361 | 4 -2 roll exch 0 ne | 1361 | 4 -2 roll exch 0 ne |
| 1362 | { | 1362 | { |
| 1363 | dup _pm rotate fc | 1363 | dup _pm rotate fc |
| 1364 | 1 -1 _pm scale fc | 1364 | 1 -1 _pm scale fc |
| 1365 | neg _pm rotate fc | 1365 | neg _pm rotate fc |
| 1366 | } | 1366 | } |
| 1367 | { | 1367 | { |
| 1368 | pop | 1368 | pop |
| 1369 | } ifelse | 1369 | } ifelse |
| 1370 | dup _pm rotate fc | 1370 | dup _pm rotate fc |
| 1371 | exch dup sin exch cos div 1 0 0 1 0 6 2 roll | 1371 | exch dup sin exch cos div 1 0 0 1 0 6 2 roll |
| 1372 | _pm astore fc | 1372 | _pm astore fc |
| 1373 | neg _pm rotate fc | 1373 | neg _pm rotate fc |
| 1374 | _pd exch get /_fdd exch ddef | 1374 | _pd exch get /_fdd exch ddef |
| 1375 | /_pf | 1375 | /_pf |
| 1376 | { | 1376 | { |
| 1377 | save | 1377 | save |
| 1378 | /_doClip 0 ddef | 1378 | /_doClip 0 ddef |
| 1379 | 0 1 _fdd length 1 sub | 1379 | 0 1 _fdd length 1 sub |
| 1380 | { | 1380 | { |
| 1381 | /_fd exch _fdd exch get ddef | 1381 | /_fd exch _fdd exch get ddef |
| 1382 | _fd | 1382 | _fd |
| 1383 | 0 2 _fd length 2 sub | 1383 | 0 2 _fd length 2 sub |
| 1384 | { | 1384 | { |
| 1385 | gsave | 1385 | gsave |
| 1386 | 2 copy get dup _ ne | 1386 | 2 copy get dup _ ne |
| 1387 | { | 1387 | { |
| 1388 | cvx exec _fc | 1388 | cvx exec _fc |
| 1389 | } | 1389 | } |
| 1390 | { | 1390 | { |
| 1391 | pop | 1391 | pop |
| 1392 | } ifelse | 1392 | } ifelse |
| 1393 | 2 copy 1 add get dup _ ne | 1393 | 2 copy 1 add get dup _ ne |
| 1394 | { | 1394 | { |
| 1395 | aload pop findfont _fm | 1395 | aload pop findfont _fm |
| 1396 | patternfill | 1396 | patternfill |
| 1397 | } | 1397 | } |
| 1398 | { | 1398 | { |
| 1399 | pop | 1399 | pop |
| 1400 | fill | 1400 | fill |
| 1401 | } ifelse | 1401 | } ifelse |
| 1402 | grestore | 1402 | grestore |
| 1403 | pop | 1403 | pop |
| 1404 | } for | 1404 | } for |
| 1405 | pop | 1405 | pop |
| 1406 | } for | 1406 | } for |
| 1407 | restore | 1407 | restore |
| 1408 | newpath | 1408 | newpath |
| 1409 | } ddef | 1409 | } ddef |
| 1410 | /_psf | 1410 | /_psf |
| 1411 | { | 1411 | { |
| 1412 | save | 1412 | save |
| 1413 | /_doClip 0 ddef | 1413 | /_doClip 0 ddef |
| 1414 | 0 1 _fdd length 1 sub | 1414 | 0 1 _fdd length 1 sub |
| 1415 | { | 1415 | { |
| 1416 | /_fd exch _fdd exch get ddef | 1416 | /_fd exch _fdd exch get ddef |
| 1417 | _fd | 1417 | _fd |
| 1418 | 0 2 _fd length 2 sub | 1418 | 0 2 _fd length 2 sub |
| 1419 | { | 1419 | { |
| 1420 | gsave | 1420 | gsave |
| 1421 | 2 copy get dup _ ne | 1421 | 2 copy get dup _ ne |
| 1422 | { | 1422 | { |
| 1423 | cvx exec _fc | 1423 | cvx exec _fc |
| 1424 | } | 1424 | } |
| 1425 | { | 1425 | { |
| 1426 | pop | 1426 | pop |
| 1427 | } ifelse | 1427 | } ifelse |
| 1428 | 2 copy 1 add get dup _ ne | 1428 | 2 copy 1 add get dup _ ne |
| 1429 | { | 1429 | { |
| 1430 | aload pop findfont _fm | 1430 | aload pop findfont _fm |
| 1431 | 9 copy 6 npop patternashow | 1431 | 9 copy 6 npop patternashow |
| 1432 | } | 1432 | } |
| 1433 | { | 1433 | { |
| 1434 | pop | 1434 | pop |
| 1435 | 6 copy 3 npop ashow | 1435 | 6 copy 3 npop ashow |
| 1436 | } ifelse | 1436 | } ifelse |
| 1437 | grestore | 1437 | grestore |
| 1438 | pop | 1438 | pop |
| 1439 | } for | 1439 | } for |
| 1440 | pop | 1440 | pop |
| 1441 | } for | 1441 | } for |
| 1442 | restore | 1442 | restore |
| 1443 | %3 npop newpath | 1443 | %3 npop newpath |
| 1444 | sw rmoveto | 1444 | sw rmoveto |
| 1445 | } ddef | 1445 | } ddef |
| 1446 | /_pjsf | 1446 | /_pjsf |
| 1447 | { | 1447 | { |
| 1448 | save | 1448 | save |
| 1449 | /_doClip 0 ddef | 1449 | /_doClip 0 ddef |
| 1450 | 0 1 _fdd length 1 sub | 1450 | 0 1 _fdd length 1 sub |
| 1451 | { | 1451 | { |
| 1452 | /_fd exch _fdd exch get ddef | 1452 | /_fd exch _fdd exch get ddef |
| 1453 | _fd | 1453 | _fd |
| 1454 | 0 2 _fd length 2 sub | 1454 | 0 2 _fd length 2 sub |
| 1455 | { | 1455 | { |
| 1456 | gsave | 1456 | gsave |
| 1457 | 2 copy get dup _ ne | 1457 | 2 copy get dup _ ne |
| 1458 | { | 1458 | { |
| 1459 | cvx exec _fc | 1459 | cvx exec _fc |
| 1460 | } | 1460 | } |
| 1461 | { | 1461 | { |
| 1462 | pop | 1462 | pop |
| 1463 | } ifelse | 1463 | } ifelse |
| 1464 | 2 copy 1 add get dup _ ne | 1464 | 2 copy 1 add get dup _ ne |
| 1465 | { | 1465 | { |
| 1466 | aload pop findfont _fm | 1466 | aload pop findfont _fm |
| 1467 | 12 copy 6 npop patternawidthshow | 1467 | 12 copy 6 npop patternawidthshow |
| 1468 | } | 1468 | } |
| 1469 | { | 1469 | { |
| 1470 | pop 9 copy 3 npop awidthshow | 1470 | pop 9 copy 3 npop awidthshow |
| 1471 | } ifelse | 1471 | } ifelse |
| 1472 | grestore | 1472 | grestore |
| 1473 | pop | 1473 | pop |
| 1474 | } for | 1474 | } for |
| 1475 | pop | 1475 | pop |
| 1476 | } for | 1476 | } for |
| 1477 | restore | 1477 | restore |
| 1478 | swj rmoveto | 1478 | swj rmoveto |
| 1479 | } ddef | 1479 | } ddef |
| 1480 | /_lp /none ddef | 1480 | /_lp /none ddef |
| 1481 | } def | 1481 | } def |
| 1482 | /sc | 1482 | /sc |
| 1483 | { | 1483 | { |
| 1484 | _sm dup concatmatrix pop | 1484 | _sm dup concatmatrix pop |
| 1485 | } def | 1485 | } def |
| 1486 | /P | 1486 | /P |
| 1487 | { | 1487 | { |
| 1488 | /_sm exch ddef | 1488 | /_sm exch ddef |
| 1489 | 9 -2 roll _pm translate sc | 1489 | 9 -2 roll _pm translate sc |
| 1490 | 7 -2 roll _pm scale sc | 1490 | 7 -2 roll _pm scale sc |
| 1491 | 5 -1 roll _pm rotate sc | 1491 | 5 -1 roll _pm rotate sc |
| 1492 | 4 -2 roll exch 0 ne | 1492 | 4 -2 roll exch 0 ne |
| 1493 | { | 1493 | { |
| 1494 | dup _pm rotate sc | 1494 | dup _pm rotate sc |
| 1495 | 1 -1 _pm scale sc | 1495 | 1 -1 _pm scale sc |
| 1496 | neg _pm rotate sc | 1496 | neg _pm rotate sc |
| 1497 | } | 1497 | } |
| 1498 | { | 1498 | { |
| 1499 | pop | 1499 | pop |
| 1500 | } ifelse | 1500 | } ifelse |
| 1501 | dup _pm rotate sc | 1501 | dup _pm rotate sc |
| 1502 | exch dup sin exch cos div 1 0 0 1 0 6 2 roll | 1502 | exch dup sin exch cos div 1 0 0 1 0 6 2 roll |
| 1503 | _pm astore sc | 1503 | _pm astore sc |
| 1504 | neg _pm rotate sc | 1504 | neg _pm rotate sc |
| 1505 | _pd exch get /_sdd exch ddef | 1505 | _pd exch get /_sdd exch ddef |
| 1506 | /_ps | 1506 | /_ps |
| 1507 | { | 1507 | { |
| 1508 | save | 1508 | save |
| 1509 | /_doClip 0 ddef | 1509 | /_doClip 0 ddef |
| 1510 | 0 1 _sdd length 1 sub | 1510 | 0 1 _sdd length 1 sub |
| 1511 | { | 1511 | { |
| 1512 | /_sd exch _sdd exch get ddef | 1512 | /_sd exch _sdd exch get ddef |
| 1513 | _sd | 1513 | _sd |
| 1514 | 0 2 _sd length 2 sub | 1514 | 0 2 _sd length 2 sub |
| 1515 | { | 1515 | { |
| 1516 | gsave | 1516 | gsave |
| 1517 | 2 copy get dup _ ne | 1517 | 2 copy get dup _ ne |
| 1518 | { | 1518 | { |
| 1519 | cvx exec _sc | 1519 | cvx exec _sc |
| 1520 | } | 1520 | } |
| 1521 | { | 1521 | { |
| 1522 | pop | 1522 | pop |
| 1523 | } ifelse | 1523 | } ifelse |
| 1524 | 2 copy 1 add get dup _ ne | 1524 | 2 copy 1 add get dup _ ne |
| 1525 | { | 1525 | { |
| 1526 | aload pop findfont _sm | 1526 | aload pop findfont _sm |
| 1527 | patternstroke | 1527 | patternstroke |
| 1528 | } | 1528 | } |
| 1529 | { | 1529 | { |
| 1530 | pop stroke | 1530 | pop stroke |
| 1531 | } ifelse | 1531 | } ifelse |
| 1532 | grestore | 1532 | grestore |
| 1533 | pop | 1533 | pop |
| 1534 | } for | 1534 | } for |
| 1535 | pop | 1535 | pop |
| 1536 | } for | 1536 | } for |
| 1537 | restore | 1537 | restore |
| 1538 | newpath | 1538 | newpath |
| 1539 | } ddef | 1539 | } ddef |
| 1540 | /_pss | 1540 | /_pss |
| 1541 | { | 1541 | { |
| 1542 | save | 1542 | save |
| 1543 | /_doClip 0 ddef | 1543 | /_doClip 0 ddef |
| 1544 | 0 1 _sdd length 1 sub | 1544 | 0 1 _sdd length 1 sub |
| 1545 | { | 1545 | { |
| 1546 | /_sd exch _sdd exch get ddef | 1546 | /_sd exch _sdd exch get ddef |
| 1547 | _sd | 1547 | _sd |
| 1548 | 0 2 _sd length 2 sub | 1548 | 0 2 _sd length 2 sub |
| 1549 | { | 1549 | { |
| 1550 | gsave | 1550 | gsave |
| 1551 | 2 copy get dup _ ne | 1551 | 2 copy get dup _ ne |
| 1552 | { | 1552 | { |
| 1553 | cvx exec _sc | 1553 | cvx exec _sc |
| 1554 | } | 1554 | } |
| 1555 | { | 1555 | { |
| 1556 | pop | 1556 | pop |
| 1557 | } ifelse | 1557 | } ifelse |
| 1558 | 2 copy 1 add get dup _ ne | 1558 | 2 copy 1 add get dup _ ne |
| 1559 | { | 1559 | { |
| 1560 | aload pop findfont _sm | 1560 | aload pop findfont _sm |
| 1561 | 10 copy 6 npop patternashowstroke | 1561 | 10 copy 6 npop patternashowstroke |
| 1562 | } | 1562 | } |
| 1563 | { | 1563 | { |
| 1564 | pop 7 copy 3 npop ss | 1564 | pop 7 copy 3 npop ss |
| 1565 | } ifelse | 1565 | } ifelse |
| 1566 | grestore | 1566 | grestore |
| 1567 | pop | 1567 | pop |
| 1568 | } for | 1568 | } for |
| 1569 | pop | 1569 | pop |
| 1570 | } for | 1570 | } for |
| 1571 | restore | 1571 | restore |
| 1572 | pop sw rmoveto | 1572 | pop sw rmoveto |
| 1573 | } ddef | 1573 | } ddef |
| 1574 | /_pjss | 1574 | /_pjss |
| 1575 | { | 1575 | { |
| 1576 | save | 1576 | save |
| 1577 | /_doClip 0 ddef | 1577 | /_doClip 0 ddef |
| 1578 | 0 1 _sdd length 1 sub | 1578 | 0 1 _sdd length 1 sub |
| 1579 | { | 1579 | { |
| 1580 | /_sd exch _sdd exch get ddef | 1580 | /_sd exch _sdd exch get ddef |
| 1581 | _sd | 1581 | _sd |
| 1582 | 0 2 _sd length 2 sub | 1582 | 0 2 _sd length 2 sub |
| 1583 | { | 1583 | { |
| 1584 | gsave | 1584 | gsave |
| 1585 | 2 copy get dup _ ne | 1585 | 2 copy get dup _ ne |
| 1586 | { | 1586 | { |
| 1587 | cvx exec _sc | 1587 | cvx exec _sc |
| 1588 | } | 1588 | } |
| 1589 | { | 1589 | { |
| 1590 | pop | 1590 | pop |
| 1591 | } ifelse | 1591 | } ifelse |
| 1592 | 2 copy 1 add get dup _ ne | 1592 | 2 copy 1 add get dup _ ne |
| 1593 | { | 1593 | { |
| 1594 | aload pop findfont _sm | 1594 | aload pop findfont _sm |
| 1595 | 13 copy 6 npop patternawidthshowstroke | 1595 | 13 copy 6 npop patternawidthshowstroke |
| 1596 | } | 1596 | } |
| 1597 | { | 1597 | { |
| 1598 | pop 10 copy 3 npop jss | 1598 | pop 10 copy 3 npop jss |
| 1599 | } ifelse | 1599 | } ifelse |
| 1600 | grestore | 1600 | grestore |
| 1601 | pop | 1601 | pop |
| 1602 | } for | 1602 | } for |
| 1603 | pop | 1603 | pop |
| 1604 | } for | 1604 | } for |
| 1605 | restore | 1605 | restore |
| 1606 | pop swj rmoveto | 1606 | pop swj rmoveto |
| 1607 | } ddef | 1607 | } ddef |
| 1608 | /_lp /none ddef | 1608 | /_lp /none ddef |
| 1609 | } def | 1609 | } def |
| 1610 | /A | 1610 | /A |
| 1611 | { | 1611 | { |
| 1612 | pop | 1612 | pop |
| 1613 | } def | 1613 | } def |
| 1614 | /nc 3 dict def | 1614 | /nc 3 dict def |
| 1615 | nc begin | 1615 | nc begin |
| 1616 | /setgray | 1616 | /setgray |
| 1617 | { | 1617 | { |
| 1618 | pop | 1618 | pop |
| 1619 | } bind def | 1619 | } bind def |
| 1620 | /setcmykcolor | 1620 | /setcmykcolor |
| 1621 | { | 1621 | { |
| 1622 | 4 npop | 1622 | 4 npop |
| 1623 | } bind def | 1623 | } bind def |
| 1624 | /setcustomcolor | 1624 | /setcustomcolor |
| 1625 | { | 1625 | { |
| 1626 | 2 npop | 1626 | 2 npop |
| 1627 | } bind def | 1627 | } bind def |
| 1628 | currentdict readonly pop end | 1628 | currentdict readonly pop end |
| 1629 | currentdict readonly pop end | 1629 | currentdict readonly pop end |
| 1630 | setpacking | 1630 | setpacking |
| 1631 | /annotatepage | 1631 | /annotatepage |
| 1632 | { | 1632 | { |
| 1633 | } def | 1633 | } def |
| 1634 | %%EndResource | 1634 | %%EndResource |
| 1635 | %%EndProlog | 1635 | %%EndProlog |
| 1636 | %%BeginSetup | 1636 | %%BeginSetup |
| 1637 | Adobe_cmykcolor /initialize get exec | 1637 | Adobe_cmykcolor /initialize get exec |
| 1638 | Adobe_cshow /initialize get exec | 1638 | Adobe_cshow /initialize get exec |
| 1639 | Adobe_customcolor /initialize get exec | 1639 | Adobe_customcolor /initialize get exec |
| 1640 | Adobe_pattern_AI3 /initialize get exec | 1640 | Adobe_pattern_AI3 /initialize get exec |
| 1641 | Adobe_Illustrator_AI3 /initialize get exec | 1641 | Adobe_Illustrator_AI3 /initialize get exec |
| 1642 | %%EndSetup | 1642 | %%EndSetup |
| 1643 | 0 A | 1643 | 0 A |
| 1644 | 0 O | 1644 | 0 O |
| 1645 | 0.25 1 1 0.25 k | 1645 | 0.25 1 1 0.25 k |
| 1646 | 0 R | 1646 | 0 R |
| 1647 | 0 0 0 1 K | 1647 | 0 0 0 1 K |
| 1648 | 0 J 0 j 0.2 w 4 M []0 d | 1648 | 0 J 0 j 0.2 w 4 M []0 d |
| 1649 | 9.19971 841.8735 m | 1649 | 9.19971 841.8735 m |
| 1650 | 10.3311 842.1226 8.4126 839.4165 8 839.2729 c | 1650 | 10.3311 842.1226 8.4126 839.4165 8 839.2729 c |
| 1651 | 9.57471 839.1421 9.3999 839.0728 v | 1651 | 9.57471 839.1421 9.3999 839.0728 v |
| 1652 | 9 838.9233 8.8623 838.561 8.6001 838.2729 c | 1652 | 9 838.9233 8.8623 838.561 8.6001 838.2729 c |
| 1653 | 7.39355 836.9985 6.49365 836.7915 7.3999 834.8735 C | 1653 | 7.39355 836.9985 6.49365 836.7915 7.3999 834.8735 C |
| 1654 | 8.03125 834.9233 8.1626 835.1919 8.6001 834.8735 c | 1654 | 8.03125 834.9233 8.1626 835.1919 8.6001 834.8735 c |
| 1655 | 9.32471 834.3423 7.78125 832.979 10 832.0728 c | 1655 | 9.32471 834.3423 7.78125 832.979 10 832.0728 c |
| 1656 | 11.356 831.5229 14.1997 832.1792 15.7998 832.2729 C | 1656 | 11.356 831.5229 14.1997 832.1792 15.7998 832.2729 C |
| 1657 | 15.1997 831.8481 12.5186 830.4546 12.3999 829.6733 c | 1657 | 15.1997 831.8481 12.5186 830.4546 12.3999 829.6733 c |
| 1658 | 12.1812 828.2612 12.9434 828.686 13.5996 828.4731 C | 1658 | 12.1812 828.2612 12.9434 828.686 13.5996 828.4731 C |
| 1659 | 13.2998 827.2544 13.106 827.5854 14.1997 827.0737 C | 1659 | 13.2998 827.2544 13.106 827.5854 14.1997 827.0737 C |
| 1660 | 13.9058 825.7485 14.3687 824.8296 15.3999 824.0737 C | 1660 | 13.9058 825.7485 14.3687 824.8296 15.3999 824.0737 C |
| 1661 | 15.1309 824.0229 15.0996 823.2983 15.1997 823.4731 C | 1661 | 15.1309 824.0229 15.0996 823.2983 15.1997 823.4731 C |
| 1662 | 16.7246 820.23 19.1123 818.5229 21.9995 816.6733 C | 1662 | 16.7246 820.23 19.1123 818.5229 21.9995 816.6733 C |
| 1663 | 21.6309 816.3979 20.6558 815.2925 20.5996 815.2739 C | 1663 | 21.6309 816.3979 20.6558 815.2925 20.5996 815.2739 C |
| 1664 | 21.5811 815.061 22.6807 814.1675 23.1997 814.0737 c | 1664 | 21.5811 815.061 22.6807 814.1675 23.1997 814.0737 c |
| 1665 | 25.1621 813.7358 24.1309 815.5171 25.7998 814.2739 C | 1665 | 25.1621 813.7358 24.1309 815.5171 25.7998 814.2739 C |
| 1666 | 26.6689 815.0239 26.7061 815.8735 25.9995 816.2729 C | 1666 | 26.6689 815.0239 26.7061 815.8735 25.9995 816.2729 C |
| 1667 | 28.0439 816.4048 32.4873 820.0112 33.7998 821.6733 c | 1667 | 28.0439 816.4048 32.4873 820.0112 33.7998 821.6733 c |
| 1668 | 34.6494 822.7612 35.0557 823.9985 34.999 825.4731 C | 1668 | 34.6494 822.7612 35.0557 823.9985 34.999 825.4731 C |
| 1669 | 36.499 826.3667 36.6807 826.5669 35.999 828.0737 C | 1669 | 36.499 826.3667 36.6807 826.5669 35.999 828.0737 C |
| 1670 | 38.5498 828.7544 34.6494 830.9604 33.5996 831.6733 C | 1670 | 38.5498 828.7544 34.6494 830.9604 33.5996 831.6733 C |
| 1671 | 35.2559 831.6235 37.4619 830.6421 39.3994 831.0728 c | 1671 | 35.2559 831.6235 37.4619 830.6421 39.3994 831.0728 c |
| 1672 | 40.8428 831.4048 40.2432 832.3169 40.5996 833.2729 c | 1672 | 40.8428 831.4048 40.2432 832.3169 40.5996 833.2729 c |
| 1673 | 41.0186 834.4165 42.5557 833.5415 42.999 834.4731 c | 1673 | 41.0186 834.4165 42.5557 833.5415 42.999 834.4731 c |
| 1674 | 43.1182 834.7417 42.999 836.0728 Y | 1674 | 43.1182 834.7417 42.999 836.0728 Y |
| 1675 | 42.3311 836.8979 41.6055 837.5981 40.7998 838.2729 c | 1675 | 42.3311 836.8979 41.6055 837.5981 40.7998 838.2729 c |
| 1676 | 40.0811 838.8794 42.4736 838.6919 41.999 838.8735 c | 1676 | 40.0811 838.8794 42.4736 838.6919 41.999 838.8735 c |
| 1677 | 41.293 839.1479 40.9424 840.7671 40.5996 841.4731 C | 1677 | 41.293 839.1479 40.9424 840.7671 40.5996 841.4731 C |
| 1678 | 42.5557 840.1978 45.3623 837.6665 44.5986 833.8735 c | 1678 | 42.5557 840.1978 45.3623 837.6665 44.5986 833.8735 c |
| 1679 | 44.124 831.5298 41.2871 829.8423 40.1992 827.8735 c | 1679 | 44.124 831.5298 41.2871 829.8423 40.1992 827.8735 c |
| 1680 | 37.6934 823.3608 36.5117 817.7612 33.3994 813.8735 c | 1680 | 37.6934 823.3608 36.5117 817.7612 33.3994 813.8735 c |
| 1681 | 33.2178 813.6548 33.1182 813.3608 32.7998 813.2739 c | 1681 | 33.2178 813.6548 33.1182 813.3608 32.7998 813.2739 c |
| 1682 | 32.3496 813.1606 33.4121 812.8677 33.5996 812.8735 c | 1682 | 32.3496 813.1606 33.4121 812.8677 33.5996 812.8735 c |
| 1683 | 38.4121 813.0864 39.874 811.2544 40.7998 816.0737 C | 1683 | 38.4121 813.0864 39.874 811.2544 40.7998 816.0737 C |
| 1684 | 40.8428 815.8169 40.4053 818.0737 42.1992 818.6733 C | 1684 | 40.8428 815.8169 40.4053 818.0737 42.1992 818.6733 C |
| 1685 | 42.5557 815.4302 40.749 813.4673 39.3994 811.2739 C | 1685 | 42.5557 815.4302 40.749 813.4673 39.3994 811.2739 C |
| 1686 | 37.5996 811.7231 36.3115 812.2739 33.7998 812.2739 C | 1686 | 37.5996 811.7231 36.3115 812.2739 33.7998 812.2739 C |
| 1687 | 33.7998 810.0112 33.793 805.686 33.1992 804.4731 c | 1687 | 33.7998 810.0112 33.793 805.686 33.1992 804.4731 c |
| 1688 | 33.168 804.4233 32.6182 803.5981 32.7998 803.4731 c | 1688 | 33.168 804.4233 32.6182 803.5981 32.7998 803.4731 c |
| 1689 | 33.9248 802.7231 34.6367 801.4048 34.1992 800.0737 c | 1689 | 33.9248 802.7231 34.6367 801.4048 34.1992 800.0737 c |
| 1690 | 33.9365 799.3052 32.999 797.7427 33.7998 797.2739 c | 1690 | 33.9365 799.3052 32.999 797.7427 33.7998 797.2739 c |
| 1691 | 35.624 796.2114 37.168 797.3052 38.7998 796.8735 C | 1691 | 35.624 796.2114 37.168 797.3052 38.7998 796.8735 C |
| 1692 | 40.0742 800.6548 40.874 803.8608 42.1992 807.8735 C | 1692 | 40.0742 800.6548 40.874 803.8608 42.1992 807.8735 C |
| 1693 | 42.624 807.6987 42.6924 807.5425 42.999 807.2739 C | 1693 | 42.624 807.6987 42.6924 807.5425 42.999 807.2739 C |
| 1694 | 44.7861 810.73 46.999 812.7485 47.999 817.0737 C | 1694 | 44.7861 810.73 46.999 812.7485 47.999 817.0737 C |
| 1695 | 48.3994 815.8735 L | 1695 | 48.3994 815.8735 L |
| 1696 | 49.7373 815.98 49.999 816.0737 V | 1696 | 49.7373 815.98 49.999 816.0737 V |
| 1697 | 48.4678 814.7856 47.0674 812.6235 46.999 812.4731 c | 1697 | 48.4678 814.7856 47.0674 812.6235 46.999 812.4731 c |
| 1698 | 44.9561 809.3237 44.4111 808.8481 43.999 807.2739 C | 1698 | 44.9561 809.3237 44.4111 808.8481 43.999 807.2739 C |
| 1699 | 44.9932 807.2427 44.6494 807.5552 45.5986 806.6733 C | 1699 | 44.9932 807.2427 44.6494 807.5552 45.5986 806.6733 C |
| 1700 | 44.6436 805.8989 45.2686 805.9048 44.7998 805.0737 c | 1700 | 44.6436 805.8989 45.2686 805.9048 44.7998 805.0737 c |
| 1701 | 44.7617 805.0171 44.0742 805.0737 43.999 805.0737 C | 1701 | 44.7617 805.0171 44.0742 805.0737 43.999 805.0737 C |
| 1702 | 43.624 803.2427 42.4307 802.436 41.999 801.0737 c | 1702 | 43.624 803.2427 42.4307 802.436 41.999 801.0737 c |
| 1703 | 41.3994 799.2046 41.5557 798.2983 40.3994 796.4741 c | 1703 | 41.3994 799.2046 41.5557 798.2983 40.3994 796.4741 c |
| 1704 | 38.4561 793.4302 38.249 794.9546 34.5996 793.8745 c | 1704 | 38.4561 793.4302 38.249 794.9546 34.5996 793.8745 c |
| 1705 | 33.7686 792.7495 33.5996 792.6733 v | 1705 | 33.7686 792.7495 33.5996 792.6733 v |
| 1706 | 32.6748 792.2983 31.1309 792.1987 30.1992 792.0737 C | 1706 | 32.6748 792.2983 31.1309 792.1987 30.1992 792.0737 C |
| 1707 | 30.9619 790.1802 31.7998 790.4741 34.3994 790.4741 C | 1707 | 30.9619 790.1802 31.7998 790.4741 34.3994 790.4741 C |
| 1708 | 35.0371 788.0308 35.1934 789.2681 37.1992 788.2739 c | 1708 | 35.0371 788.0308 35.1934 789.2681 37.1992 788.2739 c |
| 1709 | 38.0742 787.8433 38.793 786.0991 39.3994 785.2739 c | 1709 | 38.0742 787.8433 38.793 786.0991 39.3994 785.2739 c |
| 1710 | 39.999 784.4614 41.499 783.8433 41.999 783.0737 c | 1710 | 39.999 784.4614 41.499 783.8433 41.999 783.0737 c |
| 1711 | 42.1807 782.7866 41.668 782.5308 41.5996 782.4741 C | 1711 | 42.1807 782.7866 41.668 782.5308 41.5996 782.4741 C |
| 1712 | 44.5049 779.7056 47.499 773.8804 51.1992 772.0737 c | 1712 | 44.5049 779.7056 47.499 773.8804 51.1992 772.0737 c |
| 1713 | 51.3242 772.0181 51.7803 771.8862 51.7998 771.8745 c | 1713 | 51.3242 772.0181 51.7803 771.8862 51.7998 771.8745 c |
| 1714 | 52.1436 771.6929 52.2178 771.3745 52.3994 771.2749 C | 1714 | 52.1436 771.6929 52.2178 771.3745 52.3994 771.2749 C |
| 1715 | 50.8682 771.6245 51.3057 771.1558 50.999 771.2749 C | 1715 | 50.8682 771.6245 51.3057 771.1558 50.999 771.2749 C |
| 1716 | 51.2178 769.8745 50.5986 769.8745 V | 1716 | 51.2178 769.8745 50.5986 769.8745 V |
| 1717 | 49.4561 774.1743 45.3369 775.1304 43.5986 778.8745 C | 1717 | 49.4561 774.1743 45.3369 775.1304 43.5986 778.8745 C |
| 1718 | 43.3555 778.4624 42.8369 778.3179 42.7998 778.2749 C | 1718 | 43.3555 778.4624 42.8369 778.3179 42.7998 778.2749 C |
| 1719 | 40.999 780.8931 38.7305 783.2056 37.3994 786.0737 C | 1719 | 40.999 780.8931 38.7305 783.2056 37.3994 786.0737 C |
| 1720 | 36.4248 785.9429 35.9678 785.9429 34.999 786.0737 C | 1720 | 36.4248 785.9429 35.9678 785.9429 34.999 786.0737 C |
| 1721 | 35.1553 784.6245 35.5244 783.0181 35.3994 781.2749 c | 1721 | 35.1553 784.6245 35.5244 783.0181 35.3994 781.2749 c |
| 1722 | 35.2432 779.2612 34.8623 776.6558 34.5996 774.6743 C | 1722 | 35.2432 779.2612 34.8623 776.6558 34.5996 774.6743 C |
| 1723 | 35.3623 774.3237 36.1309 773.9556 36.7998 773.4741 c | 1723 | 35.3623 774.3237 36.1309 773.9556 36.7998 773.4741 c |
| 1724 | 37.2559 773.1499 38.1992 772.437 38.3994 771.8745 c | 1724 | 37.2559 773.1499 38.1992 772.437 38.3994 771.8745 c |
| 1725 | 39.1621 769.6929 38.1992 765.2183 38.5996 762.0747 c | 1725 | 39.1621 769.6929 38.1992 765.2183 38.5996 762.0747 c |
| 1726 | 38.6748 761.437 39.2871 760.2368 39.1992 759.4741 c | 1726 | 38.6748 761.437 39.2871 760.2368 39.1992 759.4741 c |
| 1727 | 39.1494 759.0991 38.4619 758.9116 38.5996 758.0747 c | 1727 | 39.1494 759.0991 38.4619 758.9116 38.5996 758.0747 c |
| 1728 | 38.7686 757.0122 39.7549 755.5435 40.1992 754.6753 c | 1728 | 38.7686 757.0122 39.7549 755.5435 40.1992 754.6753 c |
| 1729 | 41.0811 752.9253 41.6924 751.1128 41.999 748.8745 C | 1729 | 41.0811 752.9253 41.6924 751.1128 41.999 748.8745 C |
| 1730 | 40.3496 749.8628 41.7373 748.5815 40.1992 748.0747 c | 1730 | 40.3496 749.8628 41.7373 748.5815 40.1992 748.0747 c |
| 1731 | 39.7061 747.9185 40.1992 748.8745 Y | 1731 | 39.7061 747.9185 40.1992 748.8745 Y |
| 1732 | 40.3115 751.7866 39.9424 753.1685 38.999 755.2749 c | 1732 | 40.3115 751.7866 39.9424 753.1685 38.999 755.2749 c |
| 1733 | 38.9492 755.3804 38.0498 756.2866 37.999 756.4741 c | 1733 | 38.9492 755.3804 38.0498 756.2866 37.999 756.4741 c |
| 1734 | 37.2178 759.269 36.6367 763.4556 36.999 767.4741 c | 1734 | 37.2178 759.269 36.6367 763.4556 36.999 767.4741 c |
| 1735 | 37.1992 769.7495 37.5303 770.1245 35.999 770.8745 c | 1735 | 37.1992 769.7495 37.5303 770.1245 35.999 770.8745 c |
| 1736 | 35.3311 771.2056 34.8994 771.2437 33.999 771.4741 C | 1736 | 35.3311 771.2056 34.8994 771.2437 33.999 771.4741 C |
| 1737 | 33.3057 768.7056 32.5557 766.3491 30.999 764.4741 c | 1737 | 33.3057 768.7056 32.5557 766.3491 30.999 764.4741 c |
| 1738 | 27.2686 759.9995 20.481 761.3491 17.9995 766.0737 c | 1738 | 27.2686 759.9995 20.481 761.3491 17.9995 766.0737 c |
| 1739 | 17.1621 767.6675 16.3745 769.3179 15.7998 771.2749 C | 1739 | 17.1621 767.6675 16.3745 769.3179 15.7998 771.2749 C |
| 1740 | 14.7061 770.8745 14.106 770.73 13 770.2749 C | 1740 | 14.7061 770.8745 14.106 770.73 13 770.2749 C |
| 1741 | 13.5308 766.6675 12.6812 763.0366 12.7998 760.0747 C | 1741 | 13.5308 766.6675 12.6812 763.0366 12.7998 760.0747 C |
| 1742 | 12.5308 760.4312 12.0562 760.731 11.7998 761.0747 C | 1742 | 12.5308 760.4312 12.0562 760.731 11.7998 761.0747 C |
| 1743 | 10.4248 756.4253 6.0376 755.6304 5 750.2749 C | 1743 | 10.4248 756.4253 6.0376 755.6304 5 750.2749 C |
| 1744 | 4.7998 752.7437 4 751.8745 Y | 1744 | 4.7998 752.7437 4 751.8745 Y |
| 1745 | 3.20605 751.9312 3.625 752.4683 3.6001 752.4741 C | 1745 | 3.20605 751.9312 3.625 752.4683 3.6001 752.4741 C |
| 1746 | 5.65625 753.9116 9.43115 757.1304 10.3999 759.4741 c | 1746 | 5.65625 753.9116 9.43115 757.1304 10.3999 759.4741 c |
| 1747 | 11.6875 762.606 10.7437 769.3433 12 771.8745 c | 1747 | 11.6875 762.606 10.7437 769.3433 12 771.8745 c |
| 1748 | 12.4497 772.7993 14.3062 773.5366 15.1997 774.0737 C | 1748 | 12.4497 772.7993 14.3062 773.5366 15.1997 774.0737 C |
| 1749 | 14.7124 777.6558 14.1436 781.7925 14.5996 785.8745 C | 1749 | 14.7124 777.6558 14.1436 781.7925 14.5996 785.8745 C |
| 1750 | 13.8184 785.8745 12.9746 785.8745 12.1997 785.8745 C | 1750 | 13.8184 785.8745 12.9746 785.8745 12.1997 785.8745 C |
| 1751 | 11.6997 783.9868 10.1812 779.5679 9.19971 778.0737 c | 1751 | 11.6997 783.9868 10.1812 779.5679 9.19971 778.0737 c |
| 1752 | 9.125 777.9683 8.5376 778.2368 8.3999 778.2749 C | 1752 | 9.125 777.9683 8.5376 778.2368 8.3999 778.2749 C |
| 1753 | 8.10596 777.1675 8.2876 776.6616 7.7998 775.6743 c | 1753 | 8.10596 777.1675 8.2876 776.6616 7.7998 775.6743 c |
| 1754 | 7.79346 775.6675 7.2251 775.6743 7.19971 775.6743 C | 1754 | 7.79346 775.6675 7.2251 775.6743 7.19971 775.6743 C |
| 1755 | 6.08105 773.3062 2.625 770.9116 4.19971 767.8745 C | 1755 | 6.08105 773.3062 2.625 770.9116 4.19971 767.8745 C |
| 1756 | 3.88721 768.0425 3.49365 768.4312 3.3999 768.4741 C | 1756 | 3.88721 768.0425 3.49365 768.4312 3.3999 768.4741 C |
| 1757 | 3.33105 768.4741 3.26855 768.4741 3.19971 768.4741 C | 1757 | 3.33105 768.4741 3.26855 768.4741 3.19971 768.4741 C |
| 1758 | 3 768.6675 3.08105 769.1304 3 769.4741 C | 1758 | 3 768.6675 3.08105 769.1304 3 769.4741 C |
| 1759 | 0.90625 769.6245 1.65625 769.6187 2.6001 770.4741 c | 1759 | 0.90625 769.6245 1.65625 769.6187 2.6001 770.4741 c |
| 1760 | 3.94971 771.7124 5.19385 773.7368 6.19971 775.2749 c | 1760 | 3.94971 771.7124 5.19385 773.7368 6.19971 775.2749 c |
| 1761 | 4.34375 772.1187 8.3125 778.4487 7 778.4741 C | 1761 | 4.34375 772.1187 8.3125 778.4487 7 778.4741 C |
| 1762 | 7.51855 779.5181 8.44336 780.4995 9 781.4741 C | 1762 | 7.51855 779.5181 8.44336 780.4995 9 781.4741 C |
| 1763 | 8.78125 781.5181 9.19971 782.2749 Y | 1763 | 8.78125 781.5181 9.19971 782.2749 Y |
| 1764 | 8.9751 782.2241 8.8999 782.1812 8.6001 782.0737 C | 1764 | 8.9751 782.2241 8.8999 782.1812 8.6001 782.0737 C |
| 1765 | 10.2813 783.4116 10.3062 786.6304 12 787.8745 c | 1765 | 10.2813 783.4116 10.3062 786.6304 12 787.8745 c |
| 1766 | 14.1748 789.48 14.7935 787.48 15.5996 790.6733 C | 1766 | 14.1748 789.48 14.7935 787.48 15.5996 790.6733 C |
| 1767 | 18.1558 790.6733 19.1245 790.0806 19.7998 792.0737 C | 1767 | 18.1558 790.6733 19.1245 790.0806 19.7998 792.0737 C |
| 1768 | 19.8496 792.0864 18.7998 792.0737 Y | 1768 | 19.8496 792.0864 18.7998 792.0737 Y |
| 1769 | 18.0435 792.2983 16.062 792.2495 15.1997 792.6733 c | 1769 | 18.0435 792.2983 16.062 792.2495 15.1997 792.6733 c |
| 1770 | 14.9434 792.8052 14.6685 793.7808 14.3999 793.8745 c | 1770 | 14.9434 792.8052 14.6685 793.7808 14.3999 793.8745 c |
| 1771 | 10.856 795.1489 10.5747 792.9116 8.6001 796.6733 c | 1771 | 10.856 795.1489 10.5747 792.9116 8.6001 796.6733 c |
| 1772 | 6.70605 800.2739 6.4126 803.3481 4.19971 806.0737 C | 1772 | 6.70605 800.2739 6.4126 803.3481 4.19971 806.0737 C |
| 1773 | 4.76855 806.9175 4.86865 806.7544 5.3999 807.0737 C | 1773 | 4.76855 806.9175 4.86865 806.7544 5.3999 807.0737 C |
| 1774 | 3.6626 809.73 2.69385 813.2114 0 814.2739 C | 1774 | 3.6626 809.73 2.69385 813.2114 0 814.2739 C |
| 1775 | 0 814.3481 0.037598 815.0552 0 815.0737 C | 1775 | 0 814.3481 0.037598 815.0552 0 815.0737 C |
| 1776 | 1.2251 815.4106 1.44385 815.311 2.3999 815.8735 C | 1776 | 1.2251 815.4106 1.44385 815.311 2.3999 815.8735 C |
| 1777 | 1.44385 813.9487 5.23096 809.1489 6.3999 806.6733 C | 1777 | 1.44385 813.9487 5.23096 809.1489 6.3999 806.6733 C |
| 1778 | 7.1748 807.186 7.13721 807.6177 7.7998 806.2739 C | 1778 | 7.1748 807.186 7.13721 807.6177 7.7998 806.2739 C |
| 1779 | 7.70605 806.2173 7.5874 805.2612 7.6001 805.0737 c | 1779 | 7.70605 806.2173 7.5874 805.2612 7.6001 805.0737 c |
| 1780 | 7.75 802.3608 9.5625 799.7358 10.1997 796.6733 C | 1780 | 7.75 802.3608 9.5625 799.7358 10.1997 796.6733 C |
| 1781 | 12.1748 797.1802 13.3999 796.6304 15.5996 797.2739 C | 1781 | 12.1748 797.1802 13.3999 796.6304 15.5996 797.2739 C |
| 1782 | 15.2061 799.3921 14.6309 800.1548 14.1997 802.2739 C | 1782 | 15.2061 799.3921 14.6309 800.1548 14.1997 802.2739 C |
| 1783 | 15.4873 802.5171 15.231 802.6548 16.1997 803.4731 c | 1783 | 15.4873 802.5171 15.231 802.6548 16.1997 803.4731 c |
| 1784 | 16.437 803.6802 15.8184 804.23 15.7998 804.2739 c | 1784 | 16.437 803.6802 15.8184 804.23 15.7998 804.2739 c |
| 1785 | 15.2749 805.3735 15.1875 810.2046 15.3999 812.0737 C | 1785 | 15.2749 805.3735 15.1875 810.2046 15.3999 812.0737 C |
| 1786 | 13.7124 811.73 12.3311 810.6606 11.1997 810.4731 c | 1786 | 13.7124 811.73 12.3311 810.6606 11.1997 810.4731 c |
| 1787 | 10.7749 810.4106 10.4248 810.4731 10 810.4731 C | 1787 | 10.7749 810.4106 10.4248 810.4731 10 810.4731 C |
| 1788 | 9.2749 812.2671 6.80615 814.355 6.6001 815.4731 c | 1788 | 9.2749 812.2671 6.80615 814.355 6.6001 815.4731 c |
| 1789 | 6.4375 816.3481 6.875 816.7856 7 817.2729 C | 1789 | 6.4375 816.3481 6.875 816.7856 7 817.2729 C |
| 1790 | 7.1499 817.1733 7.94336 817.0854 8 817.0737 C | 1790 | 7.1499 817.1733 7.94336 817.0854 8 817.0737 C |
| 1791 | 8.44336 814.0796 9.2373 813.8921 10.5996 811.4731 C | 1791 | 8.44336 814.0796 9.2373 813.8921 10.5996 811.4731 C |
| 1792 | 12.6558 811.8794 14.0186 812.7231 16.3999 813.0737 C | 1792 | 12.6558 811.8794 14.0186 812.7231 16.3999 813.0737 C |
| 1793 | 13.4497 817.5854 12.0747 823.5542 9.3999 828.4731 c | 1793 | 13.4497 817.5854 12.0747 823.5542 9.3999 828.4731 c |
| 1794 | 8.1875 830.6978 5.5249 832.2856 5.19971 835.2729 c | 1794 | 8.1875 830.6978 5.5249 832.2856 5.19971 835.2729 c |
| 1795 | 5.16846 835.5103 5.38086 836.1919 5.3999 836.0728 C | 1795 | 5.16846 835.5103 5.38086 836.1919 5.3999 836.0728 C |
| 1796 | 5.79346 838.0298 6.21875 838.8296 7.19971 840.0728 c | 1796 | 5.79346 838.0298 6.21875 838.8296 7.19971 840.0728 c |
| 1797 | 7.50586 840.4731 7.81836 840.9673 8.19971 841.2729 c | 1797 | 7.50586 840.4731 7.81836 840.9673 8.19971 841.2729 c |
| 1798 | 8.3999 841.4419 8.9624 841.8228 9.19971 841.8735 c | 1798 | 8.3999 841.4419 8.9624 841.8228 9.19971 841.8735 c |
| 1799 | b | 1799 | b |
| 1800 | %%PageTrailer | 1800 | %%PageTrailer |
| 1801 | gsave annotatepage grestore showpage | 1801 | gsave annotatepage grestore showpage |
| 1802 | %%Trailer | 1802 | %%Trailer |
| 1803 | Adobe_Illustrator_AI3 /terminate get exec | 1803 | Adobe_Illustrator_AI3 /terminate get exec |
| 1804 | Adobe_pattern_AI3 /terminate get exec | 1804 | Adobe_pattern_AI3 /terminate get exec |
| 1805 | Adobe_customcolor /terminate get exec | 1805 | Adobe_customcolor /terminate get exec |
| 1806 | Adobe_cshow /terminate get exec | 1806 | Adobe_cshow /terminate get exec |
| 1807 | Adobe_cmykcolor /terminate get exec | 1807 | Adobe_cmykcolor /terminate get exec |
| 1808 | Adobe_packedarray /terminate get exec | 1808 | Adobe_packedarray /terminate get exec |
| 1809 | %%EOF | 1809 | %%EOF | ... | ... |
-
Please register or sign in to post a comment